Microsoft 语音到文本无法识别除英语之外的其他语言

问题描述

我正在使用微软语音转文本服务。我的要求是识别和转换麦克风上的任何口语应转换为文本。例如,如果我说西班牙语,那么我应该得到西班牙语文本作为响应。

这是我的代码,我通过提供订阅密钥和端点 url 来设置配置

  var config = SpeechConfig.FromHost(new Uri("ws://xxxxxxxx:5000/"));

    using (var recognizer = new SpeechRecognizer(config))
    {
        Console.WriteLine("Say something...");
        var result = await recognizer.RecognizeOnceAsync();

        // Checks result.
        if (result.Reason == ResultReason.RecognizedSpeech)
        {
            Console.WriteLine($"We recognized: {result.Text}");
        }
    } 

请帮助我如何将任何语音转换为文本语言。

解决方法

语音识别的一项常见任务是指定输入(或源)语言。让我们来看看如何将输入语言更改为德语。在您的代码中,找到您的 SpeechConfig,然后在其正下方添加此行。

speech_config.speech_recognition_language="de-DE"

speech_recognition_language 是一个将字符串作为参数的参数。您可以在支持的区域设置/语言列表中提供任何值。

请使用表中的语言环境https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/language-support#speech-to-text

-宇通

,

您可以在语音识别器处理中使用语言检测,请参阅文档 here

它在语言方面有一些限制(请参阅语言支持 here)。

怎么样?

对于 C# 实现,您应该根据语音配置对象的优先级将“延迟”切换为“准确度”:

speechConfig.SetProperty(PropertyId.SpeechServiceConnection_SingleLanguageIdPriority,"Latency");

向您的 AutoDetectSourceLanguageConfig 添加 SpeechRecognizer 配置:

然后你可以得到你的结果:

var autoDetectSourceLanguageConfig =
    AutoDetectSourceLanguageConfig.FromLanguages(
        new string[] { "en-US","de-DE","ja-JP","de-DE" });

using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
using (var recognizer = new SpeechRecognizer(
    speechConfig,autoDetectSourceLanguageConfig,audioConfig))
{
    var speechRecognitionResult = await recognizer.RecognizeOnceAsync();
    var autoDetectSourceLanguageResult =
        AutoDetectSourceLanguageResult.FromResult(speechRecognitionResult);
    var detectedLanguage = autoDetectSourceLanguageResult.Language;
}