音声からテキストをリアルタイムに生成するツールを作ってみた

メールの文面や、Slack 等に投稿、返信する内容を音声入力で簡単に作るツールを試したかったので、OpenAI の API プラットフォームを使ってローカル環境で動かせる音声 → テキストのリアルタイム変換ツールを作ってみたというお話。

メールの文面や、Slack 等に投稿、返信する内容を音声入力で簡単に作るツールみたいなの、例えば Willow Voice のようなアプリケーション、使ってみたいんだけどプラットフォーム(Willow Voice だと MacOS のみとか)が限定されてたり、課金してまで使うかなみたいのがあったんですが、(精度とか機能とかの差は置いておいて)一度どんな感じになるのかを体感してみようということで OpenAI の API プラットフォームを使ってローカル環境で動かせる音声 → テキストのリアルタイム変換ツールを作ってみました。

QuickDictate スクリーンショット

使用した OpenAI API は以下の 2 つ。

gpt-4o-mini-realtime-preview の正式リリース版 (かつ性能向上版) として gpt-realtime が、gpt-4o-mini-transcribe の上位版として、GPT-4o Transcribe がありますが、どちらもオーバースペックだと思いますしコストも高いので、なるべくコストがかからない方向で選択しています。

なお、単純に音声データをテキスト変換してもらうだけなら gpt-4o-mini-transcribe のみで可能ですけども、今回はリアルタイムに音声を変換したいので、gpt-4o-mini-realtime-preview を使用しています。

WebRTC でリアルタイムに音声を送るため Realtime セッション(gpt-4o-mini-realtime-preview)を使いつつ、そのセッション設定で gpt-4o-mini-transcribe を指定してリアルタイムに変換されたテキストを取得(AI からの会話レスポンスは全部無視!)するという建て付け。

基本的な処理の流れとしては以下の通り。

  1. ユーザー音声 → ブラウザが navigator.mediaDevices.getUserMedia でマイク入力を取得、RTCPeerConnection にストリームを送信
  2. RTCPeerConnection/api/realtime-token で受け取った client_secret を使用して、gpt-4o-mini-realtime-preview へ WebRTC 接続を確立
  3. session.updatedataChannel で送信した設定に基づき、リアルタイムセッション内部で gpt-4o-mini-transcribe が音声をテキスト変換
  4. テキスト変換結果が dataChannel で返るので、その内容を画面に反映
[User Mic]
     │
     ▼  getUserMedia()
[Browser Audio Track]──┐
     │                 │ addTrack()
     ▼                 ▼
[RTCPeerConnection] ──► gpt-4o-mini-realtime-preview
    ▲   ▲                 │ (handles WebRTC session)
    │   │                 │
    │   └─ session.update ├─► gpt-4o-mini-transcribe (ASR)
    │                     │
 dataChannel ◄────────────┘ transcription events
    │
    ▼
[UI live text]

使い方はリポジトリの README.md を読んでもらえれば簡単です。

実際に使ってみていますが、音声入力って楽ですね。ただ、文章を考えながらしゃべると途中で止まったり、言い直しが発生したりしがちなので精度はちょっと下がるかな。ある程度頭の中で文面を作ってから話し始めないといけないかも。とりあえず草案を作るって用途ならそこまで気にしなくてもいいですが。

ただし、リアルタイム、音声→テキスト変換の API はそこそこコストが高いので、あんまり調子に乗ってガンガン使ってると予算を速攻で使い切る可能性があるので注意してください。私はしばらく使ってみようかなと思っています。

とはいえ、最近は、BlabbyAI Speech to Text みたいに、拡張機能で Web サイトに AI による音声入力機能を追加するような便利ツールも出てきているのでおとなしくそういうのを使った方が早いような気もしますが。

記事をここまで御覧頂きありがとうございます。
この記事が気に入ったらサポートしてみませんか?