Voice Translator

TsgcAIVoiceTranslator 在用户说话的同时翻译语音。它通过 WebSocket 把麦克风音频流式传给 OpenAI gpt-realtime-translate,翻译后的语音一到就播放,并报告所说内容和译文的实时转写。

TsgcAIVoiceTranslator

一个实时的语音到语音翻译器。设置 API 密钥和目标语言,调用 Start,然后说话即可。模型会自动识别源语言,因此无需再配置其他内容。

组件类

TsgcAIVoiceTranslator

用途

实时语音到语音翻译

平台

带麦克风和扬声器的 Windows。Linux 和 macOS 使用您自己的音频。

版本。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 报告该平台上没有可用的音频设备。

规范与参考资料

该组件所用服务的权威资料来源。

继续探索

在线帮助sgcAI 组件的完整 API 参考和使用指南。
OpenAI Translator使用 TsgcAIOpenAITranslator,每次录制、翻译并朗读一个片段。
所有 sgcAI 组件浏览 sgcAI 组件的完整功能矩阵。
下载免费试用版包含 Voice Translator 演示。请使用您自己的 OpenAI 密钥。
价格Single、Team 和 Site 授权,均含完整源代码。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

准备好开始了吗?

下载免费试用版,为您的应用程序加上实时语音到语音翻译。