首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure认知语音服务STT -部分文本

Azure认知语音服务STT -部分文本
EN

Stack Overflow用户
提问于 2020-05-28 15:52:43
回答 1查看 467关注 0票数 1

在我的代码(下面)中,当我通过STT处理它时,它只给出整个音频的第一个字母/单词。

音频有"A、B、C、D、E、F“

我遗漏了什么?

代码语言:javascript
复制
Imports Microsoft.CognitiveServices.Speech
Imports Microsoft.CognitiveServices.Speech.SpeechConfig
Imports Microsoft.CognitiveServices.Speech.Audio

Module Module1

    Sub Main()
        Dim SpeechConfig As SpeechConfig = FromSubscription("<CHANGED>", "eastus")
        Dim audioConfig As Audio.AudioConfig = Audio.AudioConfig.FromWavFileInput("<CHANGED>.wav")
        SpeechConfig.OutputFormat = Microsoft.CognitiveServices.Speech.OutputFormat.Detailed
        Dim recognizer As New SpeechRecognizer(SpeechConfig, audioConfig)
        Dim result = recognizer.RecognizeOnceAsync().Result

        Select Case result.Reason
            Case ResultReason.RecognizedSpeech
                Console.WriteLine($"RECOGNIZED: Text={result.Text}")
                Console.WriteLine($"    Intent not recognized.")
            Case ResultReason.NoMatch
                Console.WriteLine($"NOMATCH: Speech could not be recognized.")
            Case ResultReason.Canceled
                Dim cancellation = CancellationDetails.FromResult(result)
                Console.WriteLine($"CANCELED: Reason={cancellation.Reason}")

                If cancellation.Reason = CancellationReason.[Error] Then
                    Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}")
                    Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}")
                    Console.WriteLine($"CANCELED: Did you update the subscription info?")
                End If
        End Select

    End Sub

End Module

您可以在github这里下载音频文件,https://github.com/ullfindsmit/StackOverflowAssets/blob/master/abcdef.wav

另外,如果你知道我在哪里可以得到更详细的STT数据,我会很感激的。我正在寻找的是一个JSON输出,它表示开始时间和结束时间以及单词和/或句子。

非常感谢你的帮助。

更新,因此异步处理程序由于某种原因不能为我工作,但是下面的代码确实起作用了

代码语言:javascript
复制
        While True
            Dim result = recognizer.RecognizeOnceAsync().Result
            Select Case result.Reason
                Case ResultReason.RecognizedSpeech
                    Console.WriteLine($"RECOGNIZED: Text={result.Text}")
                    Console.WriteLine($"    Intent not recognized.")
                Case ResultReason.NoMatch
                    Console.WriteLine($"NOMATCH: Speech could not be recognized.")
                Case ResultReason.Canceled
                    Dim cancellation = CancellationDetails.FromResult(result)
                    Console.WriteLine($"CANCELED: Reason={cancellation.Reason}")

                    If cancellation.Reason = CancellationReason.[Error] Then
                        Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}")
                        Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}")
                        Console.WriteLine($"CANCELED: Did you update the subscription info?")
                    End If

                    Exit While
            End Select
        End While
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-28 16:05:59

RecognizeOnceAsync方法只识别“一次”.音频数据文件中包含的第一个“话语/短语”。如果你想识别多个短语,你可以做以下两件事中的一件:

  1. 反复给RecognizeOnceAsync打电话..。在识别最后一个短语之后,对该方法的下一次调用将返回一个将Canceled.
  2. Switch设置为result.Reason的结果,从使用RecognizeOnceAsync到使用StartContinuousRecognitionAsync,并将事件提交器挂钩到Recognizing事件。事件回调将允许您通过检查传递的SpeechRecognitionEventArgs来查看结果,如:e.Result .

通过像这样运行Speech CLI,您可以看到这两种行为:

代码语言:javascript
复制
spx recognize --once+ --key YOUR-KEY --region YOUR-REGION --file "https://github.com/ullfindsmit/StackOverflowAssets/blob/master/abcdef.wav"
spx recognize --continuous --key YOUR-KEY --region YOUR-REGION --file "https://github.com/ullfindsmit/StackOverflowAssets/blob/master/abcdef.wav"

您可以在这里下载演讲CLI:https://aka.ms/speech/spx-zips.zip

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62069005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档