Почему «Речь в текст» из Azure такая медленная? - PullRequest
1 голос
/ 07 ноября 2019

Я использую Azure Speech To Text API для распознавания небольших разговорных записей, от 10 секунд до 1 минуты. Каждое распознавание речи занимает около 5 секунд, что кажется слишком много!

Вот как я это делаю:

speech_config = speechsdk.SpeechConfig(subscription=speech_key, 
                                   region=service_region, 
                                   speech_recognition_language=language)
audio_config = speechsdk.audio.AudioConfig(filename=filepath)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, 
                                               audio_config=audio_config)

result = speech_recognizer.recognize_once()

Я пытался определить узкое место, используя timeit:

print(timeit.timeit(lambda : speechsdk.SpeechConfig(subscription=speech_key, 
                                     region=service_region, 
                                     speech_recognition_language=language), 
                    number=100))
>>> 0.004
print(timeit.timeit(lambda : speechsdk.audio.AudioConfig(filename=filepath), 
                    number=100))
>>> 0.003
print(timeit.timeit(lambda : speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config),
                   number=100))
>>> 0.118

print(timeit.timeit(lambda : print(speech_recognizer.recognize_once()),
                   number=5)) # Only doing this 5 times because it's very slow
>>> 35.01

На самом деле я использовал функцию-обертку для повторной инициализации speech_recognizer, потому что вызов метода visible () делает его непригодным для использования.

В этом эксперименте требуется около 7 секунд для расшифровки одного из 11. секунд записи.

Я переписываю аудиофайлы на французский, используя service_region = "westeurope"

...