OpenAI Translator
TsgcAIOpenAITranslator は、ほぼあらゆる言語の音声入力を、選んだ言語(既定は英語)の音声に変換します。マイクで録音し、gpt-transcribe で音声を文字起こしし、チャットモデルでテキストを翻訳し、確認する機会を提供したうえで、テキスト読み上げコンポーネント経由で読み上げます。
TsgcAIOpenAITranslator は、ほぼあらゆる言語の音声入力を、選んだ言語(既定は英語)の音声に変換します。マイクで録音し、gpt-transcribe で音声を文字起こしし、チャットモデルでテキストを翻訳し、確認する機会を提供したうえで、テキスト読み上げコンポーネント経由で読み上げます。
音声から音声への 2 段階の翻訳コンポーネントです。録音した音声をまず元の言語で文字起こしし、続いてチャット補完がテキストを Language に翻訳します。入力言語は自動で判定されるため、翻訳先を選ぶだけで使えます。
sgcAI は単体で完結しています。このコンポーネントは、土台となる sgcWebSockets Core ランタイムとともに sgcAI に同梱されています。
レコーダーとテキスト読み上げコンポーネントを接続し、API キーと翻訳先の言語を設定して Start を呼び出します。
uses
sgcAI, sgcAI_OpenAI_Audio_Translator,
sgcAI_AudioRecorder_MCI, sgcAI_TextToSpeech_System;
var
oTranslator: TsgcAIOpenAITranslator;
begin
oTranslator := TsgcAIOpenAITranslator.Create(nil);
oTranslator.OpenAIOptions.ApiKey := 'sk-...';
oTranslator.AudioRecorder := sgcAudioRecorderMCI1;
oTranslator.TextToSpeech := sgcTextToSpeechSystem1;
// 1. transcribe, 2. translate the text with a chat model
oTranslator.TranslatorOptions.Translation.Model := 'gpt-transcribe';
oTranslator.TranslatorOptions.Translation.ChatModel := 'gpt-6-luna';
oTranslator.TranslatorOptions.Translation.Language := 'Spanish';
oTranslator.OnTranslation := TranslatorTranslation;
oTranslator.Start; // Stop ends the session
end;
procedure TForm1.TranslatorTranslation(Sender: TObject;
var Text: string; var Accept: Boolean);
begin
memoLog.Lines.Add(Text);
Accept := True; // set False to skip speaking this segment
end;
// includes: sgcAI.hpp, sgcAI_OpenAI_Audio_Translator.hpp
TsgcAIOpenAITranslator *oTranslator = new TsgcAIOpenAITranslator(NULL);
oTranslator->OpenAIOptions->ApiKey = "sk-...";
oTranslator->AudioRecorder = sgcAudioRecorderMCI1;
oTranslator->TextToSpeech = sgcTextToSpeechSystem1;
oTranslator->TranslatorOptions->Translation->Model = "gpt-transcribe";
oTranslator->TranslatorOptions->Translation->ChatModel = "gpt-6-luna";
oTranslator->TranslatorOptions->Translation->Language = "Spanish";
oTranslator->OnTranslation = TranslatorTranslation;
oTranslator->Start();
最もよく使うメンバーです。
AudioRecorder が音声を取得し、TextToSpeech が翻訳結果を読み上げます。TextToSpeech を未割り当てにすると、コンポーネントはテキストだけを返して録音を再開します。
Translation.Model は文字起こしモデル(gpt-transcribe)、Translation.ChatModel はテキストを翻訳するチャットモデル(gpt-6-luna)、Translation.Language は翻訳先の言語(English)です。Language を空にすると、翻訳なしの文字起こしが得られます。
他の OpenAI コンポーネントと共通の、API キー、エンドポイント、HTTP、リトライ、ログの設定です。
Start で録音を開始し、Stop で終了します。レコーダーが自動モードの場合、無音の区切りごとにセグメントが閉じられ、翻訳が実行されます。
OnTranslation は翻訳テキストを Accept フラグとともに渡すため、読み上げの前にログを取ったり、修正したり、抑止したりできます。OnAudioStart と OnAudioStop が録音を追跡します。
チャットモデルが書けるすべての言語に対応します。Language に Spanish や Japanese などの名前を設定します。既定の English は、従来の whisper-1 翻訳と同じ結果になります。
なぜ 2 段階なのか。OpenAI は 2027-02-26 に /v1/audio/translations エンドポイントと whisper-1 モデルを廃止し、新しい文字起こしモデルは翻訳を行いません。そこでコンポーネントは、引き続き利用できるモデルで文字起こしと翻訳を行うようになり、既存のアプリケーションはそのまま動作します。ユーザーが話している間のリアルタイムの音声翻訳には、TsgcAIVoiceTranslator を使ってください。
このコンポーネントが利用するサービスとプロトコルの一次情報です。