IBM Watson Speech to Text Audio/Basic 不接受窄带 .WAV
IBM Watson Speech to Text Audio/Basic not accepting narrowband .WAV
我在 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
,我的程序正在执行正确的代码。我做错了什么?
谢谢!
如果您要上传的文件类型是 audio/basic
MIME 类型(也称为 "Sun .au" 文件,它是 oldest audio file types out there 之一),您应该只传递该类型.如果您要上传 WAV 文件,请将 MIME 类型指定为 audio/wav
,无论采样率是多少。
我在 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
,我的程序正在执行正确的代码。我做错了什么?
谢谢!
如果您要上传的文件类型是 audio/basic
MIME 类型(也称为 "Sun .au" 文件,它是 oldest audio file types out there 之一),您应该只传递该类型.如果您要上传 WAV 文件,请将 MIME 类型指定为 audio/wav
,无论采样率是多少。