音声パイプライン @cloudflare/voice でエージェントがおしゃべりを始めるよ!
やっほー、しぃちゃんだよ!今日はね、エージェントに「声」を持たせちゃう話だよ。テキストで会話するエージェントが、ついにマイクとスピーカーで喋りだすの。ワクワクするでしょ?
Cloudflare Blog
なにが発表されたの?
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 を手軽に試したい人にドンピシャの発表だよ!