使用OpenAI Realtime API无法获取输入音频转录的技术问询
解决OpenAI实时API获取自身输入音频转录的问题
你已经配置了input_audio_transcription参数但没收到转录事件,可按以下步骤排查修复:
- 确保会话配置时机正确:
session.update必须在WebSocket连接建立完成后、发送任何音频数据前执行。如果在发送音频后才更新会话配置,API不会对已发送的音频生成转录。 - 检查事件监听逻辑:必须在WebSocket的消息回调中正确监听对应的事件类型,不仅要监听
delta事件,还要注意completed事件获取完整转录。示例代码:this.openaiWS.on('message', (rawData) => { const event = JSON.parse(rawData.toString()); if (event.type === 'conversation.item_input_audio_transcription.delta') { // 处理实时转录片段 console.log('当前转录片段:', event.delta); } else if (event.type === 'conversation.item_input_audio_transcription.completed') { // 获取完整的输入音频转录结果 console.log('完整转录:', event.transcript); } // 其他事件处理逻辑... }); - 验证音频发送格式:发送的音频必须符合API要求的格式——16kHz采样率、单声道、PCM编码(无压缩的原始音频数据)。如果音频格式不匹配,API可能无法生成转录内容,自然不会触发相关事件。
- 确认参数兼容性:
input_audio_transcription.model指定的gpt-4o-transcribe是合法的转录模型,但要确保会话的model参数(比如gpt-4o-realtime)和转录模型兼容,目前主流实时模型都支持该转录模型。
另外,当使用semantic_vad类型的说话人检测时,API会在检测到你说话结束后才完成转录,但delta事件应该在你发送音频的过程中逐步返回。如果还是没收到,可尝试暂时关闭turn_detection,直接手动发送conversation.item.create来触发转录,测试是否能收到事件。
内容的提问来源于stack exchange,提问作者lemon
相关产品推荐
相关产品推荐

