Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
実践 Realtime API 〜入力として音声データを扱う〜 技術本部 Eight Engineering Unit 藤門 莉生
Slide 2
Slide 2 text
自己紹介 藤門 莉生(Rio Fujimon) - Sansan株式会社 - 23卒(新卒2年目) - Eight の iOSアプリを開発 - X(旧 Twitter):@RioFujimon - iOS開発で主に興味がある領域 - UIKit, SwiftUI - Bluetooth, NFC, Audio, etc
Slide 3
Slide 3 text
Realtime API https://openai.com/index/introducing-the-realtime-api/
Slide 4
Slide 4 text
Realtime API 紹介 開発者はアプリケーションに 高速な音声合成体験 を組み込めるようになった
Slide 5
Slide 5 text
Realtime API を利用するメリット Whisper 音声を テキストに 書き起こす テキスト 解析モデル 目的の 応答を生成 Realtime API
Slide 6
Slide 6 text
Kanagawa.swift で話した内容 目的の 応答を生成 Realtime API https://speakerdeck.com/riofujimon/realtime-api-ru-men 👇以下でスライドを公開中 👇 Swift で Realtime API を扱う基本を中心に話した
Slide 7
Slide 7 text
本日話す内容 目的の 応答を生成 Realtime API 音声データを Realtime API への入力として扱う方法を話す
Slide 8
Slide 8 text
Realtime API Sample App
Slide 9
Slide 9 text
実装を見ていく
Slide 10
Slide 10 text
https://platform.openai.com/docs/guides/realtime#audio-formats
Slide 11
Slide 11 text
💡 要点 - 24kHz, PCM16 の 形式に変換処理を 実施して出力する
Slide 12
Slide 12 text
💡 要点 - AVAudioSession を 設定し、有効化する
Slide 13
Slide 13 text
👀 AVAudioPCMBuffer のプロパティを表示してみる
Slide 14
Slide 14 text
💡 要点 - デフォルトでは、 48kHz, 32 bit の形式 - Int16 の値は、nil
Slide 15
Slide 15 text
💡 要点(⭐⭐⭐) 1. AVAudioFormat で24kHz, 16 bit の形式を 作成する 2. 指定の形式に変換するための Converter を 作成する 3. 形式変換後の AVAudioPCMBuffer を 準備する 4. Converter で 変換して AVAudioPCMBuffer に格納する 5. 16bit の値を取得する
Slide 16
Slide 16 text
👀 変換後のAVAudioPCMBuffer のプロパティを表示してみる
Slide 17
Slide 17 text
目的の形式( 16bit PCM Audio, 24kHz, 1channel)に変換完了 🎉
Slide 18
Slide 18 text
💡 要点 - AVAudioEngine を起動する - AVAudioEngine, Stream を停止する
Slide 19
Slide 19 text
💡 要点 - 外部への公開メソッドは 2つのみ - startStreaming() -> AsyncStream - Data 型に変換した PCM16 形式の 音声データを流す - stopStreaming()
Slide 20
Slide 20 text
💡 要点 - startStreaming() -> AsyncStream を呼び出してストリーミングを開始する - Data 型に変換した PCM16 形式の 音声データを取得する - APIClient の sendAudioBuffer(_: Data) で Realtime API に音声データを送信 - stopStreaming() でストリーミングを 停止する
Slide 21
Slide 21 text
💡 要点 - 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) がデフォルトで有効
Slide 22
Slide 22 text
今後お話する内容 目的の 応答を生成 Realtime API Realtime API からのレスポンスをを音声としてリアルタイム再生する
Slide 23
Slide 23 text
Thank You For Listening