Azure речь в текст - непрерывное распознавание - PullRequest
0 голосов
/ 13 января 2019

Я хотел бы видеть точность речевых сервисов Azure, в частности, преобразования речи в текст с использованием аудиофайла.

Я прочитал документацию https://docs.microsoft.com/en-us/python/api/azure-cognitiveservices-speech/?view=azure-python и поиграл с предложенным кодом со страницы быстрого запуска MS. Код работает нормально, и я могу получить некоторую транскрипцию, но он просто транскрибирует начало аудио (первое высказывание):

import azure.cognitiveservices.speech as speechsdk

speechKey = 'xxx'
service_region = 'westus'

speech_config = speechsdk.SpeechConfig(subscription=speechKey, region=service_region, speech_recognition_language="es-MX")
audio_config = speechsdk.audio.AudioConfig(use_default_microphone=False, filename='lala.wav')

sr = speechsdk.SpeechRecognizer(speech_config, audio_config)

es = speechsdk.EventSignal(sr.recognized, sr.recognized)

result = sr.recognize_once()

if result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(result.text))
elif result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(result.no_match_details))
elif result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = result.cancellation_details
    print("Speech Recognition canceled: {}".format(cancellation_details.reason))
    if cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(cancellation_details.error_details))

Исходя из документации, похоже, что мне нужно использовать сигналы и события для захвата полного звука, используя метод start_continuous_recognition (который не задокументирован для python, но выглядит как метод и связанные классы реализованы). Я пытался следовать другим примерам из c # и Java, но не смог реализовать это в Python.

Кто-нибудь был в состоянии сделать это и обеспечить некоторые указатели? Большое спасибо!

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете попробовать это:

import azure.cognitiveservices.speech as speechsdk
import time
speech_key, service_region = "xyz", "WestEurope"
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region, speech_recognition_language="it-IT")
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)

speech_recognizer.session_started.connect(lambda evt: print('SESSION STARTED: {}'.format(evt)))
speech_recognizer.session_stopped.connect(lambda evt: print('\nSESSION STOPPED {}'.format(evt)))
speech_recognizer.recognized.connect(lambda evt: print('\n{}'.format(evt.result.text)))

print('Say a few words\n\n')
speech_recognizer.start_continuous_recognition()
time.sleep(10)
speech_recognizer.stop_continuous_recognition()

speech_recognizer.session_started.disconnect_all()
speech_recognizer.recognized.disconnect_all()
speech_recognizer.session_stopped.disconnect_all()

Не забудьте установить предпочитаемый язык. Это не так уж много, но это хорошая отправная точка, и это работает. Я продолжу экспериментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...