Как узнать уровень достоверности транскрипции аудио с помощью пакета SDK Azure SpeechService для Python

#python-3.x #speech-to-text #azure-cognitive-services

Вопрос:

Я тестирую следующий код для транскрипции длинного аудио, оказывается, мне нужно было бы получить уровень достоверности результата транскрипции для каждого слова, где в другое время можно было бы проверить качество транскрипции.

 import azure.cognitiveservices.speech as speechsdk
import time


def speech_recognize_continuous_from_file():

    """performs continuous speech recognition with input from an audio file"""
    # <SpeechContinuousRecognitionWithFile>
    speech_config = speechsdk.SpeechConfig(subscription=SUBSCRIPTION_KEY, region=REGION)
    speech_config.speech_recognition_language="pt-BR"
    audio_config = speechsdk.audio.AudioConfig(filename="file.wav")
    speech_config.enable_dictation()
    speech_config.output_format = speechsdk.OutputFormat(1)
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
    done = False

    def stop_cb(evt):
        """callback that signals to stop continuous recognition upon receiving an event `evt`"""
        print('CLOSING on {}'.format(evt))
        nonlocal done
        done = True

    # 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()
    time.sleep(15)
    speech_recognizer.stop_continuous_recognition()

speech_recognize_continuous_from_file()
 

Я знаю, что есть возможность получить эти значения с помощью REST API, но до сих пор я не мог найти способов получить этот уровень уверенности с помощью Python SDK.

Также я изменил формат вывода speech_recognizer на «подробный», чтобы я мог получить описание NBest, но оказывается, что когда я использую метод start_continuous_recognition, все детали NBest подавляются

Ответ №1:

В настоящее время в подробных выходных данных отображается показатель уверенности. Он доступен на csharp, но не на других языках.

https://github.com/Azure-Samples/cognitive-services-speech-sdk/blob/master/samples/csharp/sharedcontent/console/speech_recognition_samples.cs#L102