Voice Translator
TsgcAIVoiceTranslator 在用户说话的同时翻译语音。它通过 WebSocket 把麦克风音频流式传给 OpenAI gpt-realtime-translate,翻译后的语音一到就播放,并报告所说内容和译文的实时转写。
TsgcAIVoiceTranslator 在用户说话的同时翻译语音。它通过 WebSocket 把麦克风音频流式传给 OpenAI gpt-realtime-translate,翻译后的语音一到就播放,并报告所说内容和译文的实时转写。
一个实时的语音到语音翻译器。设置 API 密钥和目标语言,调用 Start,然后说话即可。模型会自动识别源语言,因此无需再配置其他内容。
版本。TsgcAIVoiceTranslator 随 sgcAI 和 sgcWebSockets Enterprise 提供,与实时语音智能体 TsgcAIVoiceAgent 的版本相同。sgcAI 是自包含的:它包含该组件所基于的 sgcWebSockets Core 运行时。支持 Delphi 7 到 Delphi 13 和 C++ Builder。
设置 API 密钥和目标语言,指定转写事件,然后调用 Start。
uses
sgcWebSocket_Types, sgcAI_VoiceTranslator;
procedure TForm1.StartTranslator;
begin
oTranslator := TsgcAIVoiceTranslator.Create(Self);
oTranslator.ApiKey := 'sk-...';
oTranslator.Language := 'es'; // speak any language, hear Spanish
oTranslator.NotifyEvents := neAsynchronous;
oTranslator.OnInputTranscript := DoInputTranscript;
oTranslator.OnOutputTranscript := DoOutputTranscript;
oTranslator.OnError := DoError;
oTranslator.Start; // microphone in, translated speech out
end;
procedure TForm1.DoInputTranscript(Sender: TObject; const aDelta: string);
begin
memoSource.Text := memoSource.Text + aDelta; // what was said
end;
procedure TForm1.DoOutputTranscript(Sender: TObject; const aDelta: string);
begin
memoTarget.Text := memoTarget.Text + aDelta; // the translation
end;
procedure TForm1.DoError(Sender: TObject; const aError: string);
begin
ShowMessage(aError);
end;
procedure TForm1.SwitchLanguage;
begin
oTranslator.Language := 'fr'; // applied to the running session
end;
// includes: sgcWebSocket_Types.hpp, sgcAI_VoiceTranslator.hpp
void TForm1::StartVoiceTranslator()
{
oTranslator = new TsgcAIVoiceTranslator(this);
oTranslator->ApiKey = "sk-...";
oTranslator->Language = "es";
oTranslator->NotifyEvents = neAsynchronous;
oTranslator->OnInputTranscript = DoInputTranscript;
oTranslator->OnOutputTranscript = DoOutputTranscript;
oTranslator->OnError = DoError;
oTranslator->Start();
}
void __fastcall TForm1::DoInputTranscript(TObject *Sender, const String aDelta)
{
memoSource->Text = memoSource->Text + aDelta;
}
void __fastcall TForm1::DoOutputTranscript(TObject *Sender, const String aDelta)
{
memoTarget->Text = memoTarget->Text + aDelta;
}
void __fastcall TForm1::DoError(TObject *Sender, const String aError)
{
ShowMessage(aError);
}
关闭音频设备后,就可以翻译来自文件、电话线路或网络流的音频。用 SendAudio 推送 24 kHz 单声道的 PCM16,并从 OnOutputAudio 取得翻译后的语音。
procedure TForm1.StartCustomAudio(const aPCM16: TBytes);
begin
oTranslator.AudioCapture := False; // no microphone
oTranslator.AudioPlayback := False; // no speakers
oTranslator.OnOutputAudio := DoOutputAudio;
oTranslator.Start;
oTranslator.SendAudio(aPCM16); // PCM16, 24 kHz, mono
end;
procedure TForm1.DoOutputAudio(Sender: TObject; const aPCM16: TBytes);
begin
// translated speech, PCM16 24 kHz mono, in order
end;
您最常使用的成员。
Start 负责连接、等待会话建立、发送目标语言并打开设备。Stop 会发完待处理的音频并关闭会话。Active 在 Object Inspector 中完成同样的操作。
目标语言代码,默认为 en。会话运行期间赋予新值,更改会立即发送给模型,无需重新连接。
ApiKey、Model(gpt-realtime-translate)和 BaseURL。SafetyIdentifier 会在 OpenAI-Safety-Identifier 请求头中发送经过哈希的用户 ID。
AudioCapture 和 AudioPlayback 使用麦克风和扬声器。把它们设为 False,改为向 SendAudio 提供 24 kHz 单声道的 PCM16。
OnInputTranscript 以增量方式流出所说内容的文本,OnOutputTranscript 则流出译文的文本。
OnSessionCreated、随每个翻译音频块触发的 OnOutputAudio、OnSessionClosed 和 OnError。NotifyEvents 为 GUI 应用选择异步事件,为服务选择无同步。
平台。麦克风和扬声器路径使用 Windows 音频 API。在 Linux 和 macOS 上,请把 AudioCapture 和 AudioPlayback 设为 False,并通过 SendAudio 和 OnOutputAudio 自行处理音频。如果保持设备开启,Start 会通过 OnError 报告该平台上没有可用的音频设备。
该组件所用服务的权威资料来源。