Я использую 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"