Azure Cognitive Speech Services STT - Частичный текст - PullRequest
1 голос
/ 28 мая 2020

В моем коде (ниже), когда я обрабатываю его через STT, он дает мне только первый алфавит / слово всего аудио.

Аудио имеет "AB C DEF"

Что мне не хватает?

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, в котором указано время начала и время окончания вместе со словом и / или предложением.

Ваша помощь очень ценится.

ОБНОВЛЕНИЕ Итак, обработчики asyn c у меня по какой-то причине не работали. Однако приведенный ниже код работал

        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

1 Ответ

1 голос
/ 28 мая 2020

Метод RecognizeOnceAsync распознает только «один раз» ... первое «высказывание / фразу», содержащееся в файле аудиоданных. Если вы хотите распознать более одной фразы, вы можете сделать одно из следующих двух:

  1. Вызов RecognizeOnceAsync несколько раз ... После того, как последняя фраза будет распознана, следующая вызов метода вернет результат, для которого result.Reason установлено на Canceled.

  2. Переключитесь с использования RecognizeOnceAsync на использование StartContinuousRecognitionAsync и подключите обработчик событий к Recognizing событие. Обратный вызов события позволит вам увидеть результаты, проверив переданные SpeechRecognitionEventArgs, например: e.Result ...

Вы можете увидеть оба этих поведения, запустив Speech CLI вроде этого:

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"

Вы можете загрузить Speech CLI здесь: https://aka.ms/speech/spx-zips.zip

...