IBM Watson语音到文本音频/基本语音不接受窄带.WAV

时间:2018-09-20 22:06:38

标签: python python-3.x wav ibm-watson speech-to-text

我已经用Python 3.6编写了一个程序,该程序利用了IBM Watson的Speech to Text库。当程序搜索文件夹并逐个读取每个.wav文件时,应该检查文件的频率并以不同方式标记我的IBM Watson集成。然后,它获取响应并将其映射到列表。通过存根测试,有问题的主要代码在这里:

        speech_to_text.set_detailed_response(True)

        # Narrowband
        if rate < 16000:
            x = json.loads(
                json.dumps(speech_to_text.recognize(audio_file, content_type='audio/basic', timestamps=True, max_alternatives=0).get_result(),
                indent=2), object_hook=lambda d: namedtuple('X', d.keys())(*d.values())
                )

        # Broadband
        else:
            x = json.loads(
                json.dumps(speech_to_text.recognize(audio_file, content_type='audio/wav', timestamps=True, max_alternatives=0).get_result(),
                indent=2), object_hook=lambda d: namedtuple('X', d.keys())(*d.values())
                )

当我向它提供16 kbps以上的文件时,该程序将完全正常工作。但是,除此之外,我得到这个错误:

  File "echo_cli.py", line 64, in <module>
    json.dumps(speech_to_text.recognize(audio_file, content_type='audio/basic', timestamps=True, max_alternatives=0).get_result(),
  File "C:\Python37\lib\site-packages\watson_developer_cloud\speech_to_text_v1.py", line 373, in recognize
    accept_json=True)
  File "C:\Python37\lib\site-packages\watson_developer_cloud\watson_service.py", line 479, in request
    info=error_info, httpResponse=response)
watson_developer_cloud.watson_service.WatsonApiException: Error: This 8000hz audio input requires a narrow band model.  See https://<STT_API_ENDPOINT>/v1/models for a list of available models., Code: 400 , Information: {'code_description': 'Bad Request'} , X-dp-watson-tran-id: stream01-167902601 , X-global-transaction-id: f257b1145ba417780a01fd89

请注意,我正在使用的文件是通过网络驱动器。但是,将它们复制到本地驱动器时会遇到相同的错误,因此我认为这是一个不相关的问题。我包括此文字,以防万一我不知道的钟声响起。

根据this文档,我应该能够使用audio/basic接受窄带文件,并且根据我使用的打印命令,当我加载窄带.wav时,程序正在执行正确的代码。我在做什么错了?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果要上传的文件类型(也称为“ Sun .au”文件,它是oldest audio file types out there之一),则仅应传递audio/basic MIME类型。如果您要上传WAV文件,则无论采样率如何,都将MIME类型指定为audio/wav