使用Google Speech-to-Text API处理长音频仍遇问题求助
问题根源与解决方案
问题核心
你的代码存在致命错误:在调用异步长音频接口long_running_recognize并获取结果后,又调用了同步短音频接口client.recognize。同步接口recognize不支持处理超过1分钟的音频,这就是你仍收到400错误的直接原因。
修复步骤
移除同步接口调用
删除代码中最后一行response= client.recognize(config=config, audio=audio),直接返回异步接口的处理结果。修正后的完整代码
def googleAPI(self, gcs_uri): client=speech.SpeechClient(credentials=CREDENTIALS) audio = speech.RecognitionAudio(uri=gcs_uri) config = speech.RecognitionConfig( encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz=int(self.audio_frame), language_code="fr-FR", audio_channel_count=int(self.audio_channels), enable_separate_recognition_per_channel=True, use_enhanced=True, model="phone_call", ) # 仅使用异步长音频接口处理 operation = client.long_running_recognize(config=config, audio=audio) print("Waiting for operation to complete...") response = operation.result(timeout=10000) # 可根据音频实际时长调整超时值 return response
- 额外注意事项
- 确认
self.audio_frame和self.audio_channels的数值与GCS上的音频文件实际参数完全匹配,参数不匹配可能导致识别失败或结果异常。 - 如果音频时长超过设置的
timeout(当前10000秒),会抛出超时异常,需根据音频实际时长适当调整该值。
- 确认
内容的提问来源于stack exchange,提问作者divyashie
相关产品推荐
相关产品推荐

