2023-10-19 04:24:31
使用OpenAI的Realtime API进行单向多语言翻译的步骤如下:
语言与提示词设置:
为每种目标语言创建唯一的流,并定义相应的提示词和Realtime API会话。
这些设置定义在translation_prompts.js中,使用GPT-4o Realtime或GPT-4o mini Realtime模型。
示例代码展示了如何定义语言代码及其对应的指令:
const languageConfigs = [ { code: 'fr', instructions: french_instructions }, { code: 'es', instructions: spanish_instructions }, { code: 'tl', instructions: tagalog_instructions }, { code: 'en', instructions: english_instructions }, { code: 'zh', instructions: mandarin_instructions },];设置发言APP:
配置和管理连接到Realtime API的客户端,处理不同语言的音频流。
使用RealtimeClient实例保存每种语言的客户端引用。
示例代码展示了如何初始化客户端引用:
const clientRefs = useRef( languageConfigs.reduce((acc, { code }) => { acc[code] = new RealtimeClient({ apiKey: OPENAI_API_KEY, dangerouslyAllowAPIKeyInBrowser: true, }); return acc; }, {} as Record<string, RealtimeClient>) ).current;当用户点击连接按钮时,启动连接流程,确保所有组件初始化并准备就绪。
音频流处理:
使用WavRecorder捕获浏览器中的音频,并通过WebSocket发送给Realtime API。
示例代码展示了如何开始录音并将音频数据发送给所有客户端:
const startRecording = async () => { setIsRecording(true); const wavRecorder = wavRecorderRef.current; await wavRecorder.record((data) => { // Send mic PCM to all clients updatedLanguageConfigs.forEach(({ clientRef }) => { clientRef.current.appendInputAudio(data.mono); }); }); };显示转录文本:
监听response.audio_transcript.done事件,更新音频的转录脚本。
这些脚本由Whisper模型生成,与GPT-4o Realtime的推理同步进行。
设置收听APP:
听众可以选择目标语言,APP连接到Socket.IO服务器,中继翻译后的音频数据。
示例代码展示了如何连接服务器并设置音频流:
const connectServer = useCallback(async () => { if (socketRef.current) return; try { const socket = io('从PoC走向生产:
示例仅为演示,生产环境建议使用WebRTC以提高音频流质量和降低延迟。
应使用临时密钥连接Realtime API。
当前Realtime模型为回合制,更适合对话场景,而非不间断的同声传译。
结论: