#python-3.x #azure #speech-recognition
#python-3.x #azure #распознавание речи
Вопрос:
Привет, я пытался преобразовать большой аудиофайл (.wav) в файл .txt, используя коды MsAzure Quick start GitHub для преобразования речи в текст. Я вставил приведенные ниже коды. Они не дают ни результата, ни какого-либо сообщения об ошибке.
def speech_recognize_continuous_from_file():
"""performs continuous speech recognition with input from an audio file"""
# <SpeechContinuousRecognitionWithFile>
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)
audio_config = speechsdk.audio.AudioConfig(filename=weatherfilename)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
done = False
def stop_cb(evt):
"""callback that stops continuous recognition upon receiving an event `evt`"""
print('CLOSING on {}'.format(evt))
speech_recognizer.stop_continuous_recognition()
nonlocal done
done = True
all_results = []
def handle_final_result(evt):
all_results.append(evt.result.text)
speech_recognizer.recognized.connect(handle_final_result)
# Connect callbacks to the events fired by the speech recognizer
speech_recognizer.recognizing.connect(lambda evt: print('RECOGNIZING: {}'.format(evt)))
speech_recognizer.recognized.connect(lambda evt: print('RECOGNIZED: {}'.format(evt)))
speech_recognizer.session_started.connect(lambda evt: print('SESSION STARTED: {}'.format(evt)))
speech_recognizer.session_stopped.connect(lambda evt: print('SESSION STOPPED {}'.format(evt)))
speech_recognizer.canceled.connect(lambda evt: print('CANCELED {}'.format(evt)))
# stop continuous recognition on either session stopped or canceled events
speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)
# Start continuous speech recognition
speech_recognizer.start_continuous_recognition()
while not done:
time.sleep(.5)
print("Printing all results:")
print(all_results)
Может ли какой-либо орган подсказать мне, где я ошибаюсь. Последние несколько дней я много борюсь без какого-либо эффективного результата.
Также я признателен, если кто-либо может подсказать, как я могу загрузить и сохранить текстовый файл в нужной папке.
Спасибо
Ответ №1:
Если вы хотите получить содержимое результата записи в текстовый файл, попробуйте выполнить тестовый код ниже :
import azure.cognitiveservices.speech as speechsdk
import time
service_region = ''
speech_key=''
filename = 'D:/test.wav'
text_file_path = 'D:/temp/result.txt'
def speech_recognize_continuous_from_file():
"""performs continuous speech recognition with input from an audio file"""
# <SpeechContinuousRecognitionWithFile>
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)
audio_config = speechsdk.audio.AudioConfig(filename=filename)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
done = False
def stop_cb(evt):
"""callback that stops continuous recognition upon receiving an event `evt`"""
print('CLOSING on {}'.format(evt))
speech_recognizer.stop_continuous_recognition()
nonlocal done
done = True
all_results = []
def handle_final_result(evt):
all_results.append(evt.result.text)
speech_recognizer.recognized.connect(handle_final_result)
# Connect callbacks to the events fired by the speech recognizer
speech_recognizer.recognizing.connect(lambda evt: print('RECOGNIZING: {}'.format(evt)))
speech_recognizer.recognized.connect(lambda evt: print('RECOGNIZED: {}'.format(evt)))
speech_recognizer.session_started.connect(lambda evt: print('SESSION STARTED: {}'.format(evt)))
speech_recognizer.session_stopped.connect(lambda evt: print('SESSION STOPPED {}'.format(evt)))
speech_recognizer.canceled.connect(lambda evt: print('CANCELED {}'.format(evt)))
# stop continuous recognition on either session stopped or canceled events
speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)
# Start continuous speech recognition
speech_recognizer.start_continuous_recognition()
while not done:
time.sleep(.5)
print("writing result into txt file...")
f = open(text_file_path, "w")
for content in all_results:
f.write(content)
f.close()
print("done.")
print(all_results)
speech_recognize_continuous_from_file()
Я сохраняю код в отдельный файл .py и запускаю его напрямую, результат:
Комментарии:
1. Спасибо. Я получил аналогичный результат из файла .ipynb. Не могли бы вы подсказать, как получить общий текстовый файл, который был бы понятным и читаемым.
2. Итак, вы хотите записать содержимое результата в текстовый файл? Если да, я обновил свой ответ, пожалуйста, примите его, если это поможет вам.
3. Да, это сработало. Точность качества текста составляет 95%. Есть ли какой-либо способ улучшить качество текста? Кроме того, текстовый файл распространяется по бесконечной области. Есть ли какой-либо способ настроить ширину бумаги и увеличить длину вместо слишком широкой ширины.
4. @SALILRAY, да, вы можете использовать пользовательскую речь для улучшения преобразования речи в текст service:docs.microsoft.com/en-us/azure/cognitive-services /. …
5. Большое спасибо за вашу постоянную поддержку такому новому ученику, как я. Я открыл ссылку и последовал инструкциям в последовательности, описанной выше. Я попытался сделать это с новым проектом, загрузив свой аудиофайл (формат .wav). У меня есть данные, хранящиеся в моем OneDrive. В нем указаны недопустимые данные. Не удалось выполнить загрузку. Кроме того, есть ли какой-либо блок кода Python, доступный с пользовательской речью? Если да, можете ли вы предоставить эту ссылку? Спасибо