日常タスクを処理する音声エージェントを構築した

AI音声
この記事は約9分で読めます。

この動画では、日常のタスクを音声で処理できる音声エージェントの実装方法について解説している。作成者がDeepgram社のVoice Agent APIを使用して、メールチェック、カレンダー管理、タスク設定などを音声で操作できるパーソナルアシスタント「Talia」を構築した事例を紹介。自然な会話での割り込み機能や、外部ツールとの連携機能についても詳しく説明されている。

I Built a Voice Agent that Handles my Daily Tasks
Start building with Deepgram with 0 in credit. This can fuel a voice agent for up to 50 hours."

音声エージェントによる日常タスク管理のデモンストレーション

ここに、わしのメールをチェックしたり、カレンダーを見たり、タスクを設定してくれる音声エージェントがあるんや。

こんにちは。わたしはTaliaや、あんたの個人アシスタントやで。カレンダーの管理やメールのチェックを手伝わせてもらいまっせ。

おう、Taliaちゃん。8月7日のインタビューって何時からやったっけ?

確認させてもらいますわ。8月7日の2025年に、朝の6時18分から6時48分までインタビューが予定されてますで。何か他に詳しいことが必要でしたら教えてくださいな。そのインタビューには誰が参加する予定なん?

インタビューの参加者はBob Smith、Carol Williams、それからDavid Brownの3人やで。インタビューについて他に何か必要なことがあったら…

そのインタビューのスケジュール変更をお願いしたいんやけど。

新しい日時をどないしはりますか?それと、スケジュール変更の理由や特別なメッセージがあったら教えてくださいな。

予定がかぶってもうたから、8月22日の午後3時にしてもらえる?

8月22日の午後3時にインタビューのスケジュール変更の依頼を送らせてもらいますわ。こんな感じのメッセージはどうでっしゃろ?

「Bob、Carol、Davidの皆さんへ。お疲れさまです。スケジュールの都合で、インタビューを8月22日の午後3時に変更させていただきたく思います。ご確認よろしくお願いします。」

ええ感じやな。そのまま送っといて。

これはかなり自然な会話やったなあ。エージェントの途中で割り込むこともできたし、わしの代わりにちゃんと行動してくれとる。同じようなエージェントを、カスタマーサポートやオフィスアシスタント、ドライブスルーなんかの他のアプリケーションでも設定できるんや。この動画でその方法を見せたるで。

Deepgram Voice Agent APIの技術的特徴

これはDeepgramのVoice Agent APIで動いとるんや。これは統合された会話AI APIなんやで。つまり、音声認識とLLMの生成、音声合成を一つのAPIサービスにまとめてくれとるっちゅうことや。

LLMについては、かなりたくさんの選択肢があるんやで。独自のLLMを持ち込むこともできる。これはOpenAIのAdvanced Voice Modeみたいな、ベンダーロックインが強い他のサービスとは大きく違うところやな。3つの異なるコンポーネントの連携を心配する必要もないんや。この単一システムが全部オーケストレーションしてくれるからな。

でもわしにとって一番興味深いのは、自動音声認識の部分やで。別途音声活動検出レイヤーを実装する必要がないから、APIを通じてモデルに割り込むことができるんや。これはかなりええ感じやろ?

今日の動画のスポンサーでもあるんやけど、APIの価格設定もかなり良心的やと思うで。実際、無料で始められるし、サインアップしたら200ドルのクレジットがもらえるんや。

動画の残りでは、システムのセットアップ方法と各コンポーネントについて話していくけど、まずはプレイグラウンドで遊んでみることができるで。音声エージェントはここで利用できるんや。価格に含まれとる2つの異なるモデルがあって、一つはGPT-4 miniで、もう一つはClaude 3 Haikuや。でも独自のカスタムモデルを持ち込むこともできるで。

この3つのプロバイダーのAPI仕様に従っている限り、ほぼすべてのモデルをサポートしとると思うで。そして独自のモデルを持ち込む場合は、APIの価格も下がるんや。

この例では、GPT-4 miniを選択するで。これがわしが使ったやつや。音声合成部分では、たくさんの異なる音声が利用できるんやで。

でも本当のパワーは、モデルが外部ツールを使ったり、ファンクションコールができることやな。動画の後半でコードでの設定方法を見せたるで。ここの例では、2つの異なる機能があるんや。一つは計算をするやつで、もう一つは会話を終了するやつや。これを有効にしてみよう。

かなりたくさんの異なる例があるで。例えば、一般的なエージェント、ヘルスケアエージェント、カスタマーサポート、営業、金融サービスなんかや。一つ選んで、このエージェントと対話を始めることができるで。

こんにちは、カスタマーサポートエージェントです。

おう、壊れた携帯の対応方針ってどないなっとるん?

携帯が壊れた場合、製造上の欠陥については保証でカバーされるかもしれませんし、保護プランに加入されている場合は…

わしが最初に見せたやつとよく似とるやろ?

音声エージェントの設定と構成

独自のエージェントを設定したい場合は、設定しなアカン異なる構成がここにあるで。これらは音声の入力と出力に関連しとるんや。メインとなるのはスピーカーエージェントや。これはDeepgramの音声合成モデルやで。さっき見たように、たくさんの異なるオプションがあるんや。

言うたように、たくさんの異なるモデルをサポートしとる。デフォルトでは、GPT-4 miniを使うことになるで。思考モデルを設定して、それからシステムプロンプトとツールの説明、入力と出力を設定する必要があるんや。

異なるツールのリストがある場合、LLMはユーザーの入力とツールの説明に基づいて、どのツールを使うかを決めるんやで。

通常のワークフローはこんな感じや。LLMがユーザーの入力を見て、利用可能なツールに基づいてツールを選択し、そのツールを呼び出すんや。

ファンクションコールやツールコールの内部メカニズムはこんな感じやで。ユーザーのクエリを受け取って、LLMがツールを使うかどうかを決める。利用可能なツールからツールを使うことを決めたら、そのツールを呼び出して、そのファンクションコールやツールコールの入力を生成するんや。

システムや環境がそのツールを実行して、結果を返す。その結果がLLMに渡されて、LLMが応答を生成するんやで。

同じシステムの下で、ユーザーの音声を文字起こしして、それをLLMに渡すんや。LLMはたくさんの異なるツールにアクセスできて、それらのツールを呼び出して結果を取得し、テキストを生成する。そのテキストが音声に変換されて、その音声をクライアント側に送るんやで。

コード実装の詳細解説

これから見せるコード例は、このDeepgramのリポジトリをベースにしとるけど、わしの特定の機能用にきれいにしたんや。まず高レベルの概要を見てから、セットアップ方法を見せたるで。このリポジトリへのリンクは動画の説明欄に載せとくで。

メインのオーケストレーターはこのclient.pyファイルで、フロントエンドとバックエンドの橋渡しとして機能するFlask APIを実装しとるんや。

メインのエージェント設定は、このagent templateファイルの中にあるで。これがエージェント自体のAPIエンドポイントや。それから音声設定があって、これは基本的にマイクの設定やな。これが音声認識モデルや。

その後、思考モデルがあって、これがLLMや。今はGPT-4 miniを使っとる。それから機能やツールのリストも提供するんやで。

次に音声合成モデルがあるな。デフォルトではTaliaに設定されとるけど、フロントエンドを実行すると、利用可能なすべての音声のリストが表示されるで。

システムを開始するときに最初に見るメッセージがここにあるんや。これはハードコードされてて、時間帯に基づいてシステムが「こんばんは」「こんにちは」「おはようございます」と言うんやで。

次に、エージェントがアクセスできる機能やツールを見てみよう。ここでは、たくさんの異なる機能を定義しとるんや。考え方としては、これらの機能に対して異なるAPIエンドポイントやMCPsを接続することになるやろな。でもわしはカレンダーイベントを取得する機能を定義したんや。これはカレンダーでミーティングを作成したり、メールリストを取得したりできるで。

それからこれはメールを作成したり、To-Doを取得したり、To-Doを作成したりなんかもできるんやで。

ここが実際の機能定義や。機能やツールごとに、説明と名前、それから入力と出力があるんやで。データはシミュレートされとる。この場合、Claude 4の助けを借りてモックデータセットを作ったんや。このデータセット内では、たくさんの異なることができるのが分かるやろ。

businesslogic.pyファイルは基本的にデータ生成部分やで。モックデータを作成したり、利用可能なモックデータからランダムにサンプルデータを取得して、UI側でそのデータの一部をレンダリングできるんや。同じUIを実行すると、取得したデータに基づいて異なるカレンダーイベントが表示されるで。

見えるUIは、単一のHTMLファイルのindex.htmlで実装されとるんや。クライアント側では、たくさんの便利なヘルパー関数があるで。これがメインの音声エージェントや。その中に、マイクを設定して、ストリーミングデータを送受信し、エージェントの動作を制御するメカニズムがあるんやで。

ローカル環境でのセットアップ手順

ローカルマシンでこれを設定する方法を見せたるで。詳細なreadmeがあるんや。まず、Port Audioをインストールする必要があるで。これは重要で、これがないと動かへんからな。MacBookの説明に従うで。Port Audioをインストールするんや。

仮想環境を設定するためのたくさんの異なるオプションがあって、すべてをインストールするんやけど、基本的にはこのrequirements.txtファイルに要件があるんや。これらの要件をすべてインストールしたいんやで。pip install requirements.txtを使うで。わしはすでに仮想環境の設定と一緒にすべてインストール済みやで。

次に、Deepgram API keyを設定する必要があるんや。ターミナルでDeepgram API keyを設定するか、.envファイルがあるんやで。ここでDeepgram API keyを設定できるで。

そのためには、サインアップしたDeepgramアカウントに行くんや。200ドルのクレジットにアクセスできるで。それから名前を入力して、「API keyを作成」をクリックするんや。これを設定したら、client.pyファイルを実行するだけやで。すべてがうまくいけば、こんなUIが表示されるはずや。

ここで、対話したい異なる音声を選択できるで。デフォルトの入力デバイスで動くと思うけど、他の入力デバイスやマイクが接続されている場合は、それらも表示されるはずやで。今は、ランダムに選ばれたイベントがここにあるな。モデルはまだもっとたくさんにアクセスできるから、これらは特定の順序にはなってへんと思うで。始めてみよう。

こんばんは。わたしはTaliaや、あんたの個人アシスタントやで。カレンダーの管理を手伝わせてもらいまっせ。メールのチェックも…

今日のカレンダーがどないなっとるか教えてくれる?

確認させてもらいますわ。今日は一つのイベントが予定されてますで。これは仮のミーティングで、午前10時34分から11時34分まで、クライアント先で行われますわ。

実際、今日って何曜日やったっけ?

今日は2025年7月8日火曜日ですわ。

なるほどな。それから、わしの未完了のタスクも見て、最優先のタスクが何か教えてくれる?

確認させてもらいますわ。今あんたの未完了タスクをチェックしますわ。

さっき言うたように、会話の途中で割り込むこともできるんやで。

Deepgram社のVoice Agent APIをぜひチェックしてみることを強くお勧めするで。どう思うか教えてくれな。見てくれてありがとう、いつものように、また次回会おうな。

コメント

タイトルとURLをコピーしました