Azure - 语音转文本 - 检测扬声器通道

问题描述 投票:0回答:1

我正在使用 Azure Speech To Text - 连续识别 来转录音频文件。我将立体声 wav 文件中的扬声器分成左声道和右声道。但是,当我运行转录时,我无法正确获取通道。我尝试从

PropertyId.SpeechServiceResponse_JsonResult
接收它,但总是返回 0。我的期望是左声道为 0,右声道为 1。

var speechConfig = SpeechConfig.FromSubscription(/*api key*/, /*region*/);
var audioConfig = AudioConfig.FromWavFileInput(filePath);
var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

是否有一些隐藏属性或缺少配置来实现此目的?

我尝试从

JsonResult
属性找到频道:

var speechServiceResponseJsonResultJson = eventArgs.Result.Properties.GetProperty(PropertyId.SpeechServiceResponse_JsonResult);

var channel = 0;
if (speechServiceResponseJsonResultJson != null)
{
    var speechServiceResponseJsonResult =
        JsonConvert.DeserializeObject<JObject>(
            eventArgs.Result.Properties.GetProperty(PropertyId
                .SpeechServiceResponse_JsonResult));

    if (speechServiceResponseJsonResult.TryGetValue("Channel", StringComparison.InvariantCultureIgnoreCase, out var channelValue))
    {
        channel = channelValue.ToObject<int>();
    }
}
c# azure azure-cognitive-services speech-to-text azure-speech
1个回答
0
投票

看起来

SpeechServiceResponse_JsonResult
属性不提供扬声器通道信息。 Azure Speech to Text 服务不直接提供区分立体声音频文件中左声道和右声道的方法。该文档没有提及任何允许您直接实现此目的的属性或配置。

转录立体声音频文件的一种可能的解决方法是将立体声音频文件拆分为两个单独的单声道音频文件,使用 Azure Speech To Text 分别转录每个单声道音频文件,然后组合转录内容,同时跟踪转录的通道来自。

这种方法可以让您知道转录来自哪个通道,因为您将单独处理每个通道。

此外,正如您提到的,您想要通过文字记录来识别说话者 ID,您可以使用

conversation transcription with diarization
,它可以帮助区分说话者并提供带有说话者 ID 的输出。

通过这个示例代码,我能够获得带有说话者 ID 的转录文本。 输出: enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.