この記事は、「VOICEVOXをMacで動かそうシリーズ」の第二弾です。
VOICEVOX 0.10からmacOSがサポートされるようになりました。 以下のリンクからダウンロードできます。 voicevox.hiroshiba.jp この記事は古くなっていますが、参考のため残しています。
VOICEVOXはマルチプラットフォームで動作するように設計されているため、ビルド次第でWindows/Linux/Macで動作させることができます。 VOICEVOXのリポジトリでは、Windows向けビルドとLinux向けビルドが公開されましたが、Mac向けビルドがまだ公開されていません。
この連載では、VOICEVOXをMacで動かすことを目標として、いくつかのソフトウェアをビルドしていきます。
前回はVOICEVOXエンジンのビルドを行いました。
第二弾は、VOICEVOXのビルドです。
- "VOICEVOX"という名前について
- VOICEVOXとは
- VOICEVOXエンジンのパスを環境変数に通す
- Node/npmのインストール
- VOICEVOXのダウンロード
- モジュールのインストール
- electron-builderの更新
- ライセンス情報のマージ
- 実行時環境変数を書き換える
- Mac向けビルド情報の追加
- アイコンの拡大
- 追加展開ファイル先の設定
- ビルド
- 終わりに
- おまけ:デバッグする方法
"VOICEVOX"という名前について
VOICEVOXという名前は、2つのことを指しています。 紛らわしいので注意してください。
この記事では、後者のビルドを行います。
VOICEVOXとは
VOICEVOXは、テキストから音声合成をするソフトウェアです。 現在利用できる音声には、ずんだもんや四国めたんがいます。 VOICEVOXは入力されたテキスト情報をVOICEVOXエンジンへHTTPによって通信し、イントネーション情報や音声データを得ています。
VOICEVOXはElectronで作られているため、Mac上でもビルドが可能です。 早速ビルドしてみましょう。
ビルドコマンドはVOICEVOXのリポジトリ内にあるREADME.mdを参考にしています。
VOICEVOXエンジンのパスを環境変数に通す
前回作成したVOICEVOXエンジンのパスを環境変数VOICEVOX_ENGINE_DIR
に通しておいてください。
この環境変数の情報はビルドの際に自動で利用されます。
/path/to/voicevox_engine/
を、あなたの環境でビルドしたVOICEVOXエンジンのパスに書き換えてください。
export VOICEVOX_ENGINE_DIR=/path/to/voicevox_engine/run.dist/
Node/npmのインストール
前提として、VOICEVOXはNodeやnpmを利用します。 VOICEVOXはこれらのバージョンに厳しい要求をしているので、nodebrewを使ってインストールします。 Homebrewは前回の時点でインストールが済んでいるので省略します。
brew install nodebrew
nodebrew setup_dirs # nodebrewを使うために必要なセットアップを実施
インストール後、VOICEVOXの要求するバージョンのNodeをインストールし、有効化します。
Nodeのインストール
nodebrew install v14.17.4 nodebrew use v14.17.4
npmのダウングレード
また、Nodeと一緒にインストールされたnpmは新しすぎてVOICEVOXをビルドできないので、ダウングレードします。
npm install -g npm@6
これで準備は完了です。
VOICEVOXのダウンロード
ではビルドしていきましょう。 早速VOICEVOXのソースコードをダウンロードします。
curl -OL https://github.com/Hiroshiba/voicevox/archive/refs/tags/0.7.4.zip ditto -x -k --sequesterRsrc --rsrc 0.7.4.zip ./ rm 0.7.4.zip cd voicevox-0.7.4
モジュールのインストール
以下のコマンドで必要なモジュール類をインストールします。
npm ci
electron-builderの更新
上記コマンドでインストールしたelectron-builderではMac上でビルドができないので、以下のコマンドでelectron-builderのバージョンを変えます。
npm install electron-builder@22.11.7
ライセンス情報のマージ
前回、VOICEVOXエンジンをビルドする際に生成したライセンス情報などをVOICEVOXのディレクトリ内にコピーし、VOICEVOXのライセンスファイルと結合して1つのライセンスファイルにします。
cp $VOICEVOX_ENGINE_DIR/licenses.json engine_licenses.json npm run license:generate -- -o voicevox_licenses.json npm run license:merge -- -o public/licenses.json -i engine_licenses.json -i voicevox_licenses.json
実行時環境変数を書き換える
ここで、ディレクトリ内にある.env.production
をテキストエディタで開き、以下の行を変更してください。
ENGINE_PATH=run.exe
↓
ENGINE_PATH=run
Mac向けビルド情報の追加
次にVOICEVOXのビルド設定にMacに関する情報を追加します。 vue.config.jsを開き、86行目以降に以下の内容を追加してください。
mac: { icon: "public/icon.png", category: "public.app-category.utilities", },
アイコンの拡大
VOICEVOXのアイコンはpublic/icon.png
にありますが、解像度が256x256とMacのアプリで使うには大きさが足りません。
そこで、アイコンの解像度を512x512以上に拡大します。
拡大はMacに標準で入っているプレビュー.appなどで行うことができます。
追加展開ファイル先の設定
electron-builderのextraFiles
項目は、Macの場合展開先がVOICEVOX.app/Contents
になってしまいます。
しかし、electronではapp.getPath("exe")
の参照先がVOICEVOX.app/Contents/MacOS
となっており、ずれてしまいます。
このままでは.env
ファイルを参照することができないので、vue.config.js
の34行目と37行目を変更します。
{ from: ".env.production", to: ".env" }, // 34行目 { from: VOICEVOX_ENGINE_DIR, to: "", // 37行目
↓
{ from: ".env.production", to: "MacOS/.env" }, // 34行目 { from: VOICEVOX_ENGINE_DIR, to: "MacOS/", // 37行目
ビルド
そして、最後にビルドコマンドを実行します。 Intel Macでは、VOICEVOXエンジンが利用しているOpenBLASがM1 Macにネイティブ対応していません。 そのため、Universal appとしてビルドしようとすると失敗します。 ここでは、x64(=Intel Mac)向けにビルドします。
npm run electron:build_pnever -- --x64
もし、Universal appとしてビルドする場合は、以下のように引数を変更します。
npm run electron:build_pnever -- --universal
しばらくするとdist_electron
ディレクトリ内にVOICEVOX-0.7.4.dmgが、mac
ディレクトリ内にVOICEVOX.app
が生成されます。
前者はインストーラで、後者がMac版VOICEVOXです。
音声が出力されていなかったせいで無音でマウスカーソルが荒ぶる変な映像になってしまったので音声を直して再掲
— Kazuaki Hyoda (@HyodaKazuaki) 2021年10月21日
現時点ではIntel MacからだとM1向けビルドがうまくいかなかったのでとりあえずx64向けにだけビルドした pic.twitter.com/5ugso1nzrs
終わりに
以上がMacでVOICEVOXをビルドする方法です。
今後、コアライブラリがONNXモデルになることで、更なる高速化が進みそうです。
つい先日発表されたMacBook Proの最新機種ではどれぐらいのスピードで音声合成できるのか、ワクワクしますね。
おまけ:デバッグする方法
VOICEVOXをデバッグする場合は、.env.production
を.env
にコピーし、以下のコマンドを実行してください。
npm run electron:serve