如何从 Microsoft.CognitiveServices.Speech 获取详细的 SpeechRecognitionResult

How can I get DetailedSpeechRecognitionResult from Microsoft.CognitiveServices.Speech

我目前正在评估 Azure CognitiveServices Speech。在 API 文档中,我看到有一个 DetailedSpeechRecognitionResult class 但我找不到获取它的方法。 我这样创建 SpeechRecognizer:

var recognizer = factory.CreateSpeechRecognizerWithFileInput(filePath, "en-US", SpeechOutputFormat.Detailed)

但我在文档中找不到 return 来自 SpeechRecognizer 的 DetailedSpeechRecognitionResult 的函数。

我是不是漏掉了什么?

好的,我找到了答案。要获得详细结果,您应该使用

SpeechRecognitionResultExtensions.Best(result)

好的,你可以使用这个跟随。首先,如果您使用 StartContinuousRecognitionAsync() 过程(当您尝试识别超过 15 秒的语音时),那么您需要在 CreateSpeechRecognizerWithFileInput 函数中创建一个事件:

    private async Task RecognitionStart(SpeechRecognizer recognition, TaskCompletionSource<int> breakProcess)
{
recognition.Recognized += RecognizedEventHandler;
}

之后,在事件处理程序中,您可以显示 Azure 的详细答案:

 private void RecognizedEventHandler(object sender,SpeechRecognitionEventArgs e)
    {
        if (!string.IsNullOrEmpty(e.Result.Text))
        {
            List<DetailedSpeechRecognitionResult> theBestResult = e.Result.Best().ToList();
            resultingText = $"{string.Format(CultureInfo.InvariantCulture, e.Result.Text)} [Confidence:{theBestResult[0].Confidence}] \n";                
        }
    }