Преобразование речи в текст с помощью служебного ключа MsAzure

#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, доступный с пользовательской речью? Если да, можете ли вы предоставить эту ссылку? Спасибо