gpt-4o-audio-preview：OpenAI の Chat Completions API でオーディオを扱う新機能を軽く見てみる【2024/10/17リリース】

## はじめに
2024/10/18 の公式からのポストで「OpenAI の Chat Completions API でオーディオを扱う機能がリリースされた」という話が投稿されていました。

https://x.com/OpenAIDevs/status/1846972987360088226

今月始めにオーディオ系APIで「Realtime API」が出ていましたが、それとは別のもののようです。

●Introducing the Realtime API | OpenAI
　https://openai.com/index/introducing-the-realtime-api/

上記の Realtime API に関する記事の冒頭を見ると、下記の記載が追記されていたようでした。

__「Update on October 17, 2024: Audio inputs and outputs are now available in the Chat Completions API. Get started here⁠(opens in a new window).」__

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c67117ae-757e-39fb-9bea-32c7a4877f9d.png)

## 公式ドキュメントの情報
### APIドキュメントの該当箇所
上で紹介した公式のポストでも、Realtime API の記事の冒頭に追加されていたテキストでも、Chat Completions API でオーディオを扱う機能に関するリンクとして、以下のページへのリンクが掲載されていました。

●Audio generation - OpenAI API
　https://platform.openai.com/docs/guides/audio

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/5938506c-1b53-bd3d-80be-faae1a774718.png)

冒頭に箇条書きとともに書いてある説明を抜粋して、少し訳をつけてみます。

- You can use these audio capabilities to:
   - Generate a spoken audio summary of a body of text (text in, audio out)： __【テキスト入力、オーディオ出力】テキストの要約を音声で出力する__
   - Perform sentiment analysis on a recording (audio in, text out)： __【オーディオ入力、テキスト出力】録音されたオーディオに対して感情分析を行う__
   - Async speech to speech interactions with a model (audio in, audio out)： __【オーディオ入力、オーディオ出力】モデルとの非同期の音声のやりとりをする__

#### 単純な音声合成や音声認識を行う場合
その下には、単純に音声合成や音声認識をやるだけなら、以前から提供されている API を使うほうがコストが安い、という注意書きも書かれていました。

以前からある API、というのは以下のものです。

●Speech to text - OpenAI API
　https://platform.openai.com/docs/guides/speech-to-text
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b18f614e-821a-9c47-1799-6cab810ae5be.png)

●Text to speech - OpenAI API
　https://platform.openai.com/docs/guides/text-to-speech

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9ea8dbad-3210-11ad-8adb-02d24f8b8523.png)

### クイックスタート
さらに、公式ドキュメントを見ていくと、クイックスタートの情報もありました。

画面上部を操作して切り替えを行うと、「Audio output from model」と「Audio input to model」の 2種類の内容を見ることができるようになっています。
どちらも、サンプルコード内で指定しているモデルは __「gpt-4o-audio-preview」__　となっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/1c1f6b1f-048f-6c49-2e10-ca2994d55543.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/dbff8118-fc01-e512-c729-0a8239615270.png)

また、サンプルコードが表示されている部分の右上部分で、「JavaScript」「Python」「curl」を切り替えられるようでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/29225f30-940f-bedb-62da-4b3a832d0681.png)

#### curl のサンプル
例えば、curl のサンプルだと以下が表示されました。

```zsh:curlのサンプル： Audio output from model
curl "https://api.openai.com/v1/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
      "model": "gpt-4o-audio-preview",
      "modalities": ["text", "audio"],
      "audio": { "voice": "alloy", "format": "wav" },
      "messages": [
        {
          "role": "user",
          "content": "Is a golden retriever a good family dog?"
        }
      ]
    }'
```

```zsh:curlのサンプル： Audio input to model
curl "https://api.openai.com/v1/chat/completions" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
      "model": "gpt-4o-audio-preview",
      "modalities": ["text", "audio"],
      "audio": { "voice": "alloy", "format": "wav" },
      "messages": [
        {
          "role": "user",
          "content": [
            { "type": "text", "text": "What is in this recording?" },
            { 
              "type": "input_audio", 
              "input_audio": { 
                "data": "<base64 bytes here>", 
                "format": "wav" 
              }
            }
          ]
        }
      ]
    }'
```

### ドキュメントの続き
さらにドキュメントを見ていくと「[Multi-turn conversations](https://platform.openai.com/docs/guides/audio/multi-turn-conversations)」や「[FAQ](https://platform.openai.com/docs/guides/audio/faq)」といった項目の記載がありました。

FAQ の部分では、「gpt-4o-audio-preview で扱える入出力の種類の詳細」や「Realtime API との違い」についてなどが書かれています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/73200ee1-e1be-6aa0-14e9-72eeeab874c7.png)

### 価格のページ
利用時の価格については、[Pricing](https://openai.com/api/pricing/) のページの、以下の「gpt-4o-audio-preview」に関する箇所を見れば良さそうでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/26883335-3e3f-f00d-be32-ef4088e427e2.png)