python - IBM Watson Speech to Text Audio/Basic 不接受窄带 .WAV

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

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

        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 时,我的程序正在执行正确的代码。我做错了什么?

谢谢!

最佳答案

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

关于python - IBM Watson Speech to Text Audio/Basic 不接受窄带 .WAV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433986/

相关文章:

python - 使用 scipy.io.wavfile 读取 wav 文件然后写入不会重现原始文件

python - 在 Tensorboard 中绘制各个层的梯度

java - 为什么我们需要 setter/getter ?

Python3 将十六进制值列表转换为字节

python - word_tokenize TypeError : expected string or buffer

ffmpeg - WAV 文件上的 Google Speech to Text 提供

python - 如何重复音频wav文件,使其在python中至少变为6秒长

python - 像字典一样使用空白类合理吗?为什么有人会这么做?

python - cython 扩展类型中的函数指针

python - 如何在 Django 表单中为 IntegerField 设置 NumberInput 小部件的宽度和输入限制