Voice Translator
TsgcAIVoiceTranslator는 사용자가 말하는 동안 음성을 번역합니다. 마이크 입력을 WebSocket으로 OpenAI gpt-realtime-translate에 스트리밍하고, 번역된 음성을 도착하는 대로 재생하며, 말한 내용과 번역 결과의 실시간 전사 텍스트를 알려 줍니다.
TsgcAIVoiceTranslator는 사용자가 말하는 동안 음성을 번역합니다. 마이크 입력을 WebSocket으로 OpenAI gpt-realtime-translate에 스트리밍하고, 번역된 음성을 도착하는 대로 재생하며, 말한 내용과 번역 결과의 실시간 전사 텍스트를 알려 줍니다.
실시간 음성 대 음성 번역기입니다. API 키와 대상 언어를 설정하고 Start를 호출한 뒤 말하면 됩니다. 모델이 원본 언어를 감지하므로 따로 설정할 것이 없습니다.
TsgcAIVoiceTranslator
실시간 음성 번역
마이크와 스피커가 있는 Windows. Linux와 macOS에서는 직접 준비한 오디오를 사용합니다.
에디션. TsgcAIVoiceTranslator는 실시간 음성 에이전트 TsgcAIVoiceAgent와 같은 에디션인 sgcAI와 sgcWebSockets Enterprise에 포함됩니다. 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는 해시된 사용자 ID를 OpenAI-Safety-Identifier 헤더로 보냅니다.
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로 알립니다.
이 컴포넌트가 사용하는 서비스의 공식 자료입니다.