Upgrade to Pro — share decks privately, control downloads, hide ads and more …

実践 Realtime API 〜入力として音声データを扱う〜

RioFujimon
November 13, 2024

実践 Realtime API 〜入力として音声データを扱う〜

Sansan × YUMEMI iOS ランチタイム LT での発表資料

RioFujimon

November 13, 2024
Tweet

More Decks by RioFujimon

Other Decks in Programming

Transcript

  1. 自己紹介 藤門 莉生(Rio Fujimon) - Sansan株式会社 - 23卒(新卒2年目) - Eight

    の iOSアプリを開発 - X(旧 Twitter):@RioFujimon - iOS開発で主に興味がある領域 - UIKit, SwiftUI - Bluetooth, NFC, Audio, etc
  2. 💡 要点(⭐⭐⭐) 1. AVAudioFormat で24kHz, 16 bit の形式を 作成する 2.

    指定の形式に変換するための Converter を 作成する 3. 形式変換後の AVAudioPCMBuffer を 準備する 4. Converter で 変換して AVAudioPCMBuffer に格納する 5. 16bit の値を取得する
  3. 💡 要点 - 外部への公開メソッドは 2つのみ - startStreaming() -> AsyncStream<Data> -

    Data 型に変換した PCM16 形式の 音声データを流す - stopStreaming()
  4. 💡 要点 - startStreaming() -> AsyncStream<Data> を呼び出してストリーミングを開始する - Data 型に変換した

    PCM16 形式の 音声データを取得する - APIClient の sendAudioBuffer(_: Data) で Realtime API に音声データを送信 - stopStreaming() でストリーミングを 停止する
  5. 💡 要点 - Client Event を作成 - 音声データを送信時は、以下 2つを 指定する

    - type: input_audio_buffer.append - audio: 24kHz, PCM16, base64エン コードされた音声データの文字列 - WebSocket を利用して Client Event を 送信する ※ 補足 ( https://platform.openai.com/docs/guides/realtime#server-vad-mode ) - Realtime API では、VAD(Voice Activity Detection) がデフォルトで有効