本文へ移動
Chandler Nguyen
AI1分で読めます

16 GB Macのローカル音声アプリでElevenLabsを置き換えられるか試した

VoiceStudioは、完全ローカルのElevenLabs代替としてGitHub Trendingにランクインしました。16 GB Macにインストールした私は、デモでは見せてもらえない失敗にぶつかりながら、最終的に動くようになったパイプラインでコースの中国語版と韓国語版を制作しました。

VoiceStudioは9月にGitHub Trendingで#1になりました。私の目を引いたのは説明文です。オープンソースで、完全にローカルで動くElevenLabs代替——音声クローン、ダビング、646言語のカタログ。アカウントもAPIキーも不要で、文字数ベースの請求もありません。

英語版と日本語版のナレーションでは、ElevenLabsに**$200**近くを支払ってきました。だから、これは抽象論ではありませんでした。16 GB Macでこれを動かせるのか。セットアップはどれほど大変なのか。有料の顧客に聴かせられるほど声質は良いのか。そして答えがイエスなら、ElevenLabsが売っていてローカルアプリにはないものは、正確には何なのか。

この実験のgit履歴は、2026年10月17日(最初のローカルTTS仕様コミット)から10月26日(中国語版と韓国語版の両方を完成)までです。四半期ではなく、九日間です。中国語と韓国語の音声セットはどちらも完了しています。各258ペア、ナレーションは3時間06分と3時間25分です。

VoiceStudioが実際に何なのか

VoiceStudioは、付きっ切りで面倒を見るPythonスクリプトではなく、デスクトップアプリです。ローカルAPIを包み、16のTTSエンジンと11の音声認識エンジンのカタログを1つのインターフェースから使えるようにしています。macOS、Windows、Linux、Dockerで動作します。アプリはAGPL-3.0です(リポジトリ、2026年10月25日取得)。

リポジトリは2026年4月9日の作成から約六か月で、10月25日時点でおよそ85,000スターを集めました。9月には少なくとも二日、GitHub Trendingのトップリポジトリになりました。最初の意外な点はライセンスです。アプリはオープンソースですが、モデルの重みが自動的に同じライセンスになるわけではありません。デフォルトのOmniVoiceエンジンには別の条件があり、事前学習済みの重みは非商用です(モデルカード、2026年10月25日取得)。最終的に使ったCosyVoice 3はApache-2.0です。VoxCPM2もApache-2.0です。

この区別が、最初の本当の教訓です。「オープンソースのElevenLabs代替」という言葉はアプリケーションについての説明です。重み、音声、出力についての説明ではありません。有料の仕事に使うなら、エンジンごとに自分でライセンスを掘り起こして確認する必要があります。

16 GB Macで動かせるのか?

動かせます。ただし、常にうまく動くわけではなく、常に希望のエンジンを使えるわけでもありません。

セットアップは難しくありませんでした。アプリをインストールして開き、エンジンを選び、重みをダウンロードさせます。難しかったのは、このマシンで258枚のスライドのバッチを最後まで、途中で倒れずに処理できるエンジンを見つけることでした。

最初にVoxCPM2を試しました。AppleのMPSで動作し、音質も良好でした。しかし16 GBのApple Silicon Macで負荷をかけると、空きメモリは約8%まで減り、スワップは9 GBを超え、リクエストがタイムアウトしました。モジュール1のパイロットは、停止するまでに36枚中1枚しか処理できませんでした。モデルが悪い声を生成していたわけではありません。メモリ圧迫下で長いバッチを最後まで完了できなかったのです。

そこでCPUでCosyVoice 3に切り替えました。これならワークロードを完了できました。参照クリップは30秒以内である必要があります。これは音声をクローンする上で現実的な制約です。使用した30秒のサンプルは、24 kHzのモノラルでした。

それでもバッチは失敗しました。今度の原因は、モデルとは無関係でした。

モデルの問題に見えた障害

一時間後、できていたのは258組のうち4組の音声ペアでした。ログには再試行、次にローカルワーカープールの429、そして孤立したジョブが記録されていました。当然ながら、ローカルエンジンが中国語を処理できないのだと思いました。

実際には処理できました。問題はNodeのfetchでした。デフォルトのヘッダータイムアウトは五分です。中国語のスライドには合成に五〜七分かかるものがありました。ワーカーがまだ生成している間にクライアントがリクエストを放棄し、その後再試行して、同じスライドの二番目のジョブをキューに入れました。誰も待っていない仕事でキューがいっぱいになったのです。

放棄したリクエストをサーバーがまだ処理しているなら、再試行は解決策ではありません。

音声合成を、タイムアウトを延長したNodeのhttp/httpsトランスポート経由に変えると、モジュール1は36/36で完了しました。最初の完全な中国語チェックポイントは258/258組、ナレーションは3 h 05 m 57 sに達しました。最初のファイルから最後のファイルまで、暦時間で28 h 12 m 41 sかかっています。これは失敗、一時停止、堅牢化、再試行を含む数字で、純粋な合成ベンチマークではありません。最悪のスライドは、三回の試行で37分かかりました。

これがローカル推論の正直な姿です。モデルは、デモの速度でテキストを音声に変える魔法の箱ではありません。長い裾野を持つバッチジョブであり、その裾野にこそエンジニアリングが存在します。

マシンがアーキテクチャを決めた

16 GB MacはTTSサーバーではありません。通常のスライドは2–6分で終わりましたが、極端なものは13–23分かかりました。最悪のものは、三回の試行を合わせて37m 09sかかりました。パイプラインの重要な改善はすべて、遅いマシンで処理を生き延びるためのものであり、ホスティングサービスに速度で勝つためのものではありませんでした。

最後まで残った制御は、次のとおりです。

  • TtsEngineの境界を設け、ローカルとホスティングのナレーションをハードコードせず明示的に選択できるようにしました。この境界は10月19日に導入し、ローカルの選択機能は10月21日に追加しました。
  • 実際の処理に見合うトランスポートのタイムアウト。デフォルトの五分という前提が、処理時間より短かったからです。
  • 単一実行とワーカーのロック、失敗時停止、再試行前のワーカーのドレイン。ビジーなエンジンに再試行を流し込むことは、再試行とは言えないからです。
  • 再開可能な文単位のチャンク。30分かかるスライドをゼロからやり直すと、このマシンにとって唯一の希少なリソースを浪費するからです。
  • 安全な置き換え。失敗した新しいテイクで、良い古いテイクを壊してはいけないからです。
  • モジュールごとのワーカーリセット。長時間の実行に伴うメモリドリフトへの予防策です。
  • サンプルレートの正規化。ある組み立て処理で、24 kHzと44.1 kHzのセグメントを連結した結果、63分の音声トラックができてしまったからです。再生時間を確認するまでは、もっともらしいファイルに見えました。
  • caffeinate -i。文書化したのは10月24日、八日目でした。それまで私は、いつでも眠れる状態のMacで何時間ものバッチを回していたのです。パイプラインの中で最も洗練されていない一行ですが、おそらく最も重要です。自分が初心者に思えました。実際、初心者でした。

ここで言いたいのは、パイプラインがすごいということではありません。パイプラインこそがプロダクトだということです。この八日間は、遅いローカルエンジンをインフラのように振る舞わせるために使いました。失敗したら止め、壊れた場所から再開し、検証していないテイクで良いテイクを置き換えず、マシンを眠らせないようにするためです。

広東語版がない理由

10月21日に、広東語をプログラムから外しました。理由は理念ではなく証拠です。このコースで検証済みのローカル広東語パスがなかったのです。VoxCPM2はyueをサポートしていませんでした。CosyVoiceはyueを挙げていますが、このコースでは検証していませんでした。推測で出荷するか、その言語を誰も聴き確認していない声を使うこともできました。しかし、間違った広東語版は、広東語版がないことより悪いです。サイトには記事用のzh-HKロケールが残っていますが、コースは簡体字中国語であり、繁体字中国語や広東語ではありません。

パイプラインは、モデルが検証されていない言語でもファイルを生成できてしまいます。出荷のゲートは、人間が「ノー」と言うことでなければなりません。

258/258と正しいことは同じではない

最初の完全な中国語チェックポイントには、少なくとも一文が欠けているスライドが16枚ありました。スライド数は合っていました。ペアも存在しました。それでも、十六枚のスライドでナレーションが誤っていました。スクリプトに対するテキストカバレッジを確認して見つけ、一つずつ修正しました。

これを受けてゲートを変えました。「すべてのファイルが存在する」から、「すべてのファイルが存在し、ナレーションがスクリプトをカバーし、各モジュールのサンプルを聴取済みである」へ。完全な一致こそがゲートです。グリーンのバッチがプロダクトではありません。

品質は十分なのか?

修正後に聴いたサンプルは、このコースには十分でした。ただし、全量の受け入れは別のゲートです。これはオーナーとしての判断であり、認定ではありません。

ローカルASRで音声を文字起こしし、スクリプトと比較しました。初期のスポットチェックの平均は0.903でした。中国語チェックポイント全体の平均は0.908です。これらは正規化されたテキスト類似度スコアであり、自然さや話者類似度の指標ではありません。最悪だったモジュール4のスライド8は0.776で、ブランド名を聞き誤っていました。モジュール6のコードスイッチを含むスライドでは、意味不明な文字列、段落の繰り返し、途中での打ち切りが順に発生しましたが、文単位のチャンク化で0.909まで修正できました。

声は明瞭で一貫していて、私の耳には私自身の声だと分かります。ElevenLabsほど洗練されていません。中国語版と韓国語版は、人間のネイティブ話者による逐行校閲を受けていません。私はAIエディターでレビューし、サンプルを聴きました。この制限はブログ記事だけでなく、コースページにも記載すべきです。

求める水準が「スタジオの声優のように聞こえること」なら、人にお金を払ってください。「明瞭で、一貫していて、自分の声で、教えるのに十分」という水準なら、ローカルでも実現できるようになりました。

かかった費用

ElevenLabs:英語版と日本語版のナレーションに、音声クローンを含めて**$200**近く。

ローカル:Mac一台。これらの実行では文字数ベースのTTS請求は追加されず、クラウドのTTSやASRの費用もかかっていません。最初の中国語チェックポイントでは、3時間の音声を得るのに暦時間で28時間かかりました。さらに、上の表にあるエンジニアリングとQAの時間もかかっています。電気代は計測していません。

$200で買ったのは、音声、ワークフロー、そして他者が維持する稼働時間でした。ローカルパスで得たのは、ホスティングされたナレーションAPIへの依存の低減、ローカルでの音声処理、そして再レンダーのたびに増えない請求です。その代償として、モデルにはなかったタイムアウトの問題に数日のエンジニアリングを費やしました。翻訳の下書きには引き続きクラウドのClaudeを使いました。Mac上で動いたのはナレーションとASRだけです。

ElevenLabsはどれだけ代替されにくいのか?

ここは慎重に言う必要があります。一台のMacでの一つのコースは、市場ではないからです。

このワークロードで変わったのは、追加のナレーション費用です。音声のクローンが許可されていて、ワークロードがバッチで、出力を検証でき、遅い尾部を許容できるなら、ローカル推論はもう一度処理する場合や別の言語を追加する場合の文字数ベースの費用を取り除きます。これは、バッチパイプラインのAPIを選ぶ開発者にとって現実の検討事項です。

ホスティングサービスが依然として提供する、置き換えにくいものは次のとおりです。

  • 品質の上限。 ローカルでテストした出力は、私が聴いた最高のホスティング音声には及びません。
  • レイテンシ。 ローカルバッチはスライドごとに数分かかります。リアルタイムで応答するプロダクトは、別のエンジニアリング課題です。
  • 運用上の信頼性。 五分のタイムアウト、メモリの上限、ワーカーのドレイン、ライセンスをデバッグする必要がありました。
  • 音声の権利とコンプライアンス。 クローンは機能ではなく、法的な領域です。ホスティングAPIを使っても、顧客が権利と同意を確保する責任が移転するわけではありません。
  • 幅広さ。 CosyVoiceは、公開対象の四言語をサポートしていると記載しています。私が検証したのは中国語で、韓国語の検証は進行中です。グローバルプロダクトには、さらに多くの言語が必要です。

正直な結論は、「オープンソースがElevenLabsを殺す」より狭いものです。ローカル推論は、私のバッチ再レンダーのワークロードの計算を変えました。しかし、インタラクティブなレイテンシ、幅広い音声カタログ、契約に基づくサポート、特定の品質上限が重要な場面で頼るプロダクトを置き換えたわけではありません。これらは一つのプロジェクトから得た私の判断であって、市場予測ではありません。

これがコースの話になった理由

音声モデルについて書こうとして始めたわけではありません。一人では制作できないほど多くの言語でコースを出荷しようとしていました。

中国語版を生み、韓国語版を生み出しているのも、このコースが教えるのと同じオペレーティングモデルです。リサーチ、計画、パイプライン構築、出力検証、そして人間が担うべき部分を残すこと。広告オペレーター一人、翻訳の下書きにClaude、ナレーションにローカルのオープンウェイト音声モデル、ローカライズ業者なし、ダビングスタジオなしです。

こうして私は、このオペレーティングモデルの一部を自分のプロダクトに適用しました。

広告業界にいて、AIが脅威なのかレバレッジなのか考えているなら、これはレバレッジ側の例です。大きなチームは必要ありません。必要なのは、センス、チェックリスト、そしてラストワンマイルをデバッグする意欲です。

別の開発者に伝えるなら

  • ローカルを試すのは、音声のクローンが許可されていて、ワークロードがバッチで、出力を検証でき、遅い尾部を許容できる場合です。
  • ホスティングにお金を払うのは、リアルタイム応答の低遅延、幅広い音声カタログ、契約に基づく稼働保証、特定の品質上限が必要な場合です。
  • 「オープンソース」アプリで有料プロダクトを作る前に、重みのライセンスを確認してください。AGPL-3.0は条件付きで商用利用を認めていますが、モデルの重みと音声の権利は別の問題です。
  • 最悪のケースをテストしてください。デモではありません。最悪のケースとは、長いプロンプトではありません。コードスイッチを含む長いスライド、トランスポートのタイムアウト、再試行キューが同時に起きることです。

よくある質問

16 GB Macでローカル音声クローンを実行できますか?

はい。CosyVoice 3はCPUで動作します。VoxCPM2は、負荷時にこのマシンで確保できる以上のメモリ余裕を必要としました。スライドごとに数秒ではなく、数分かかると考えてください。

オープンソースのTTSは有料コースに十分使えますか?

修正後に私が聴いた中国語サンプルは明瞭で一貫していますが、スタジオのように磨き上げられてはいません。これはオーナーとしての判断です。

VoiceStudioは商用利用できますか?

アプリはAGPL-3.0で、その条件の下で商用利用が認められています。モデルの重みにはそれぞれのライセンスがあり、OmniVoiceの事前学習済み重みは非商用です。出荷前に各エンジンを確認してください。

中国語版と韓国語版はAIで翻訳されたのですか?

はい。Claudeで下書きし、AIエディターでレビューしました。人間のネイティブ話者がレビューしたものではありません。ナレーションとASRはCosyVoice 3とローカルの文字起こしモデルでローカル実行し、翻訳の下書きにはクラウドを使いました。

258枚のスライドのコースにはどのくらい時間がかかりますか?

中国語チェックポイント:3時間06分の音声に、失敗と再試行を含め暦時間で28時間かかりました。その後、16枚のスライドの修正パスを行いました。韓国語チェックポイント:3時間25分の音声に31時間かかり、動かなくなったワーカーを迂回する対応と、2枚のスライドの修正も含みます。

コースについて

コースはAI-Native Media Operationsです。全七モジュール、十六のテンプレートを収録し、ナレーションは英語、日本語、簡体字中国語、韓国語に対応しています。