初めに
以下の記事でUnityでOpenAIのrealtime apiを使って音声のやり取りを行いました。今回は以下のやり取りをする際に ユーザーが入力をした音声の文字起こしを取得したい場合の設定についてです。
開発環境
- Unity 2022.3.34f1
実装
以下のドキュメントを見ると sessionの中の input_audio_transcription
が設定できることがわかります。
{ "event_id": "event_1234", "type": "session.created", "session": { "id": "sess_001", "object": "realtime.session", "model": "gpt-4o-realtime-preview-2024-10-01", "modalities": ["text", "audio"], "instructions": "", "voice": "alloy", "input_audio_format": "pcm16", "output_audio_format": "pcm16", "input_audio_transcription": null, "turn_detection": { "type": "server_vad", "threshold": 0.5, "prefix_padding_ms": 300, "silence_duration_ms": 200 }, "tools": [], "tool_choice": "auto", "temperature": 0.8, "max_response_output_tokens": null } }
詳しくドキュメントを見ると以下のように記載があります。
input_audio_transcription object
Configuration for input audio transcription, defaults to off and can be set to null to turn off once on. Input audio transcription is not native to the model, since the model consumes audio directly. Transcription runs asynchronously through Whisper and should be treated as rough guidance rather than the representation understood by the model.
Hide properties model string
The model to use for transcription, whisper-1 is the only currently supported model.
そこでセッションを更新するタイミングで input_audio_transcription
の中を設定します。
Unity側のコードでは以下のように設定をします。
var sessionUpdateMessage = new { type = "session.update", session = new { input_audio_transcription = new { model = "whisper-1" } } }; string jsonMessage = JsonConvert.SerializeObject(sessionUpdateMessage); _connection.AddOutgoingMessage(jsonMessage);