【OpenAI中文文档】使用Realtime API进行单向多语言翻译

【OpenAI中文文档】使用Realtime API进行单向多语言翻译
最新回答
墨尘花舞影

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('
    http://localhost:3001'
    ); socketRef.current = socket; await wavStreamPlayerRef.current.connect(); socket.on('connect', () => { console.log('Listener connected:', socket.id); setIsConnected(true); }); socket.on('disconnect', () => { console.log('Listener disconnected'); setIsConnected(false); }); } catch (error) { console.error('Error connecting to server:', error); } }, []);
  • 从PoC走向生产

    示例仅为演示,生产环境建议使用WebRTC以提高音频流质量和降低延迟。

    应使用临时密钥连接Realtime API。

    当前Realtime模型为回合制,更适合对话场景,而非不间断的同声传译。

结论

  • 该示例展示了如何使用Realtime API实现单向翻译,可作为情感分析或直播内容审查的基础。