エージェントと自動化
最終更新
MacでAIに電話を取らせる:ai-phoneの導入と4B・9Bモデルの選択
メモリがモデルを決めます。16GBなら4B、32GBなら9Bを勧めます。
Apple SiliconのMacで音声認識・合成はローカルMLX1で動かし、通話のテキストだけをモデルに渡す構成です。setupは検出したメモリでモデルを選び、直近の通話遅延は中央値1.50秒でした。
Macが電話を取り、会話を続けます
ai-phoneはMacでSIP電話を受け、AIが通話を続けるプログラムです。相手の言葉を音声認識で文字にし、言語モデルが返答を決め、音声合成がそれを読み上げます。この3段階が通話中に繰り返されます。
音声認識はParakeet、音声合成はPhononかKokoroをMLXで動かします。返答を作るモデルだけを、ローカルMLXモデル・Claude Code/Codexサブスクリプション・OpenAI互換エンドポイントから選べます。リモートモデルを選ぶと通話のテキストと指示が送信されます。

必要なのはMacとSIP回線です
Apple SiliconのMac、Git、Homebrew、uvが必要です。インストーラがPythonパッケージとSIPライブラリを用意します。Intel Mac、Linux、Windowsは未対応です。
電話を受けるにはSIPアドレス、SIPトランク、Telnyx・Twilioのアカウントが必要です。相手が普通の携帯電話でも通話はSIPで接続され、通話料は回線事業者の料金で発生します。発信だけなら必要なときに起動し、終わったら停止します。
導入とモデル選択の手順
リポジトリを取得してインストールスクリプトを実行し、setupを開始します。setupは着信か発信か、どの回線と声を使うかを尋ね、検出したメモリに合うモデルを提案して重みをダウンロードします。モデルファイルに数GBの空きが必要です。
既定は4Bモデルで、9Bを選ぶとメモリを多く使います。8GBのMacには2Bモデルが提案されます。setupを再実行すると回線・声・モデルを変更でき、変更後はデーモンを再起動します。
| メモリ | 推奨モデル | 用途 |
|---|---|---|
| 8GB | 2B | 短い通話、メモリに余裕がない場合 |
| 16GB | 4B(既定) | 標準構成 |
| 32GB | 9B | 長い会話、より良い文 |
git clone https://github.com/oxnw/ai-phone.git
cd ai-phone
./scripts/install.sh
uv run ai-phone setup
uv run ai-phone run発信と着信の方法
発信はプロンプト21行で始まり、通話が終わると会話記録が返ります。発信時はAIが話すという開示から始まります。
エージェントが1ターンずつ操作するにはrelayモードを使います。callで接続し、sayとlistenを交互に呼べばモデルなしでも通話を進められます。応答がないターンは25秒で終了します。
uv run ai-phone call +15555550100 --json \
--prompt "Ask whether they have a table for two at eight tonight."
最初の音声まで1.50秒、1秒目標には届かず
このプロジェクトの直近のローカル通話測定では、最初の聞こえる応答まで中央値1.50秒でした。メモリ圧迫が大きい条件で、1秒目標には届いていません。相手の発話が終わってから、生成と合成を経て再生されるまでの時間です。
通話遅延はモデルサイズとメモリの余裕に左右されます。32GBのMacで9Bを使うと文は良くなりますが、最初の音声は遅れることがあります。短い予約・確認の通話なら4Bで始め、実際の通話で遅延を測るのが安全です。
英語通話のみ、同時に1件
現在の対応範囲は英語と同時1通話です。韓国語の通話には音声認識・合成・モデルのすべてを韓国語に替える必要がありますが、このプログラムはその構成を標準では提供していません。
コードはAGPL-3.0-or-later、同梱のPJSIPインターフェースはGPLv2-or-laterです。回線事業者の料金やサブスクリプションの上限は別途かかります。常時着信にはMacを起動したままデーモンを動かします。

用語の注釈
よくある質問
- この記事で最初に確認すべきことは何ですか?
- Apple SiliconのMacで音声認識・合成はローカルMLXで動かし、通話のテキストだけをモデルに渡す構成です。setupは検出したメモリでモデルを選び、直近の通話遅延は中央値1.50秒でした。
- 必要なメモリはどのくらいですか?
- リポジトリを取得してインストールスクリプトを実行し、setupを開始します。setupは着信か発信か、どの回線と声を使うかを尋ね、検出したメモリに合うモデルを提案して重みをダウンロードします。モデルファイルに数GBの空きが必要です。
