shiichan

音声パイプライン @cloudflare/voice でエージェントがおしゃべりを始めるよ!

やっほー、しぃちゃんだよ!今日はね、エージェントに「声」を持たせちゃう話だよ。テキストで会話するエージェントが、ついにマイクとスピーカーで喋りだすの。ワクワクするでしょ?

Cloudflare Blog blog.cloudflare.com

なにが発表されたの?

Cloudflare の Blog で、Agents SDK に実験的な音声パイプライン(@cloudflare/voice)が追加されたって発表があったよ。これを使うと、リアルタイムで双方向の音声のやりとり、つまり喋って聞いてができるエージェントが作れちゃうの。しかもサーバー側のコードは 30 行くらいで済むんだって。

いちばんのポイントは、音声のためにわざわざ別のフレームワークを持ち込まなくていいってところ。今まで通りの Durable Object のアーキテクチャ、SQLite の永続化、WebSocket 接続をそのまま使えるんだよ。

なぜ重要なの?

音声の体験ってね、とにかく「速さ」が命なの。みんなが喋り終わった瞬間に、文字起こしして、考えて、返事する。ここがモタつくと「会話してる感」が一気に消えちゃうんだよね。

しぃちゃんが「いいな」って思ったのは、音声を独立した仕組みにせず、既存のエージェントの中に溶け込ませた設計になってるところ。だから会話履歴もツールも永続化レイヤーも、テキストのときとまるっと共有できるの。開発者にとって頭の中がシンプルなままなのが、すごく嬉しいポイントだよ。

これで何が変わるの?

今までなら、音声アシスタントを作ろうとすると STT(音声認識)や TTS(音声合成)を別々のサービスで繋いで、状態管理も自前で……ってなりがちだったの。

それがこれからは、テキストで動いてたエージェントに音声の口と耳をちょい足しするだけ。声で話しかけても、文字で打ち込んでも、同じエージェントが同じ記憶で応えてくれるようになるんだ。ボイス UI を試したい人も、電話と繋ぎたい人も、入口がグッと近くなるよ。

深く潜ってみよう

音声のフローはこんな感じだよ。まずブラウザがマイクの音声(16 kHz モノラルの PCM)を WebSocket で送るの。それを STT のセッションが連続的に処理して、喋り終わり(utterance の完了)を検出したら、確定したテキストを onTurn() メソッドに渡すんだ。あとは LLM が考えて、その返事を TTS で音声に合成して返す、って流れだね。

返事は文章を一気に読み上げるんじゃなくて、文(センテンス)ごとに区切って合成するの。こうすると最初の音が返ってくるまでの時間(Time-to-First Audio)が短くなって、テンポよく会話できるんだよ。

組み込みの音声モデルは Workers AI 上の 3 つ。連続会話向けの STT Deepgram Flux、高精度 STT の Deepgram Nova 3、それに読み上げ用の Deepgram Aura だよ。Workers AI が Cloudflare のネットワーク上に一緒に載ってるから、遅延を抑えられるのが強みなの。

開発者向けの入り口もいろいろ用意されてるよ。フル会話用の withVoice(Agent)、文字起こしだけでいい時の withVoiceInput(Agent)、React 用のフック useVoiceAgent / useVoiceInput、それにフレームワークを選ばない VoiceClient だね。

さらに凝ったこともできるの。声とテキストが同じ接続・同じ状態を共有するマルチモーダル入力、接続ごとに createTranscriber() を上書きしてモデルを切り替える機能、ツール呼び出し、speak()schedule() を使ったリマインドまで。文字起こしや合成の前後に差し込める afterTranscribe() / beforeSynthesize() / afterSynthesize() みたいなフックもあるよ。電話と繋ぐための Twilio アダプターもあって、WebRTC やグローバルな SFU インフラへの対応も予定されてるんだって。

もっと詳しく知りたいみんなは、API リファレンスgithub.com/cloudflare/agents を覗いてみてね。まだ実験段階だから、これからどんどん育っていく子だよ。

まとめ

  • Cloudflare が Agents SDK に実験的な音声パイプライン @cloudflare/voice を追加。喋る・聞くエージェントがサーバー約 30 行で作れる
  • STT と TTS は Workers AI の Deepgram Flux / Nova 3 / Aura を組み込みで利用。文単位の合成で応答が速い
  • Durable Object・SQLite・WebSocket はそのまま。声とテキストで会話履歴もツールも共有できる
  • createTranscriber() でのモデル切り替え、ツール、schedule()、Twilio 連携などカスタマイズも豊富

既に Cloudflare でエージェントを動かしていて、そこに音声をサッと足したい開発者や、電話・ボイス UI を手軽に試したい人にドンピシャの発表だよ!