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

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

## なにが発表されたの？

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

いちばんのポイントは、音声のためにわざわざ別のフレームワークを持ち込まなくていいってところ。今まで通りの [Durable Object](https://developers.cloudflare.com/durable-objects/) のアーキテクチャ、[SQLite](https://developers.cloudflare.com/agents/api-reference/store-and-sync-state/) の永続化、[WebSocket](https://developers.cloudflare.com/agents/api-reference/websockets/) 接続をそのまま使えるんだよ。

## なぜ重要なの？

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

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

## これで何が変わるの？

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

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

## 深く潜ってみよう

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

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

組み込みの音声モデルは Workers AI 上の 3 つ。連続会話向けの STT [Deepgram Flux](https://developers.cloudflare.com/workers-ai/models/flux/)、高精度 STT の [Deepgram Nova 3](https://developers.cloudflare.com/workers-ai/models/nova-3/)、それに読み上げ用の [Deepgram Aura](https://developers.cloudflare.com/workers-ai/models/aura-1/) だよ。Workers AI が Cloudflare のネットワーク上に一緒に載ってるから、遅延を抑えられるのが強みなの。

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

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

もっと詳しく知りたいみんなは、[API リファレンス](https://developers.cloudflare.com/agents/api-reference/voice/)と [github.com/cloudflare/agents](https://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 を手軽に試したい人にドンピシャの発表だよ！
