『AI きりたん NEUTRINO』が話題に上がっていたので Wine と Docker で検証してみました。将来的には Mac にも対応する可能性が高いのであまり急ぐ必要はないかもしれません。
Mac 版の使い方は下記の通りです。「ダウンロード」フォルダに NEUTRINO-MAIN-macOS
として展開した場合の例です。Mac 版では予めモデルデータを model
フォルダにコピーしておく必要があります。
ZIP 展開時にプログラムに実行権限(x)が付与されていない場合は予め実行権限を付与しておく必要があります。
ターミナルの操作がよくわからないという方向けに GUI アプリケーションを作りましたのでご自由にお使いください。
Mac向けAIきりたんラッパーの説明 - mattintosh note
AI きりたん/NEUTRINO をどうやって macOS で動かすか
いまのところは何かしらを経由して動かすことはできるようです。
ざっくりですが、以下のような方法で実行出来ると思います。(いつもどおりの選択肢ですね)
- Boot Camp でインストールした Windows 10 で実行する
- VirtualBox や Parallels を利用して仮想 Windows 10 で実行する
- Linux 版を仮想 Ubuntu で実行する
- Linux 版を Docker 経由で実行する
- Wine 経由で実行する
それぞれのメリット・デメリットはネット上に情報がたくさんありますのでここでは割愛します。既にいずれかの環境をお持ちであればその環境で実行されるのが最も手っ取り早いと思います。
私はメイン機が Kubuntu なので Windows 版を Wine 経由、または Linux 版をそのまま使わせていただいてますがいまのところ特に問題はありません。
VirtualBox や Parallels などの仮想環境系については既に情報がたくさんあり、AI きりたん/NEUTRINO に関わらず一般的な Windows アプリケーションを動かすのと同じ手順で今更説明する必要はないためここでは取り扱いません。
Wine で使う
EasyWine は下記のページで配布しています。
例えば「ダウンロード」フォルダに AIきりたん/NEUTRINO の ZIP をダウンロードして展開します。macOS のバージョンによっては展開時に文字化け等のエラーが発生しますが、これを無視してもプログラムの実行には問題ありません。Wine で Windows 版 7-Zip 等を使うことで文字化けが発生せずに展開することが出来ます。
次に、NEUTRINO
フォルダまで移動します。
cd ~/Downloads/NEUTRINO
Run.bat
は Windows バッチファイル形式なのでコマンドプロンプト経由で渡します。
wine cmd /c Run.bat
Catalina の場合は wine64
で呼び出す必要があります。
wine64 cmd /c Run.bat
シェルスクリプト版 Run.bat
Run.bat
をシェルスクリプトに置き換えて Wine のコマンドを実行させるものです。Unix/Linux ユーザであればこちらの方が Bat ファイルよりカスタマイズしやすいと思います。パラメータの変更がハードコーディングになっているので変数でカスタマイズ出来るようにしておくといいかもしれません。
ここでは各種 Wine バンドル内の Wine を利用するシェルスクリプトをサンプルとして公開します。各種パラメータを引数で変更出来るようになっていますのでスクリプト自体を編集する必要はありません。NEUTRINO
フォルダに入れていただいて実行権限を付与して実行するだけでお使いいただけます。
お使いいただけるのは下記の Wine バンドルです。
- EasyWine64.app
- Wine Stable.app 注1
- Wine Devel.app 注1
- Wine Staging.app 注1
注1: macOS Catalina では BundleIdentifier が検出出来ない可能性があります。環境変数 WINE
に実行ファイルのパスを与えることで任意の場所にある Wine を指定することが出来ます。
Wineloader for AI-Kiritan/NEUTRINO · GitHub
使い方
ファイルを NEUTRINO
フォルダの Run.bat
と同じ階層に Run.sh
として配置して実行権限を付与します。
cd ~/Downloads/NEUTRINO chmod +x Run.sh
実行前にまずはヘルプを確認してください。
./Run.sh -h
例えば次の表で示すような設定をしたいとします。
項目 | 値 | オプション |
---|---|---|
ベース名 | My Song | -b "My Song" |
スレッド数 | 最大 | -n 0 |
モデル | YUKO(謡子) | -m YUKO |
ピッチ | 1.2 | -p 1.2 |
それぞれのオプションを引数として渡します。指定するオプションの順番は順不同ですので好きな順に並べていただいてかまいません。
./Run.sh -b "My Song" -n 0 -m YUKO -p 1.2
オプションは他にも色々あるようですがプログラムが 3 種類あり、オプション文字が被っていたりするので Run.bat
で変数になっていた部分に留めてあります。
システム上の Wine が検出出来ない場合は環境変数 WINE
に実行ファイルのパスを与えることで任意の場所にある Wine を使用することが出来ます。
WINE=/usr/local/bin/wine64 ./Run.sh
Docker で動かす
そのまま ubuntu:18.04
イメージで動かそうとすると libgomp が存在しないためエラーになりますが、事前に libgomp1
パッケージをインストールすれば問題なくファイルを出力することが出来ました。
./bin/NEUTRINO: error while loading shared libraries: libgomp.so.1: cannot open shared object file: No such file or directory
とりあえず Docker で動かしてみる
ここでは Linux 版 AIきりたん/NEUTRINO を NEUTRINO-MAIN-Linux
として展開したとします(そのまま展開すると Windows 版とフォルダ名が被るため)。現状ではモデルデータは含まれていないためフル版から model
フォルダにコピーしておきます。
~/Downloads └── NEUTRINO-MAIN-Linux ├── bin ├── model │ ├── KIRITAN <-- フル版からコピーしてくる │ └── YOKO <-- 必要に応じてフル版からコピーしてくる ├── output ├── score │ ├── label │ │ ├── full │ │ ├── mono │ │ └── timing │ └── musicxml └── settings └── dic
各種実行ファイルに実行権限を付与しておきます。実行権限を付与しておかないと Permission denied
となりますので注意してください。
cd ~/Downloads/NEUTRINO-MAIN-Linux chmod +x Run.sh bin/*
コンテナを起動して実行します。
docker run --rm -v $PWD:/mnt ubuntu:18.04 /bin/bash -c 'apt-get -qq update && apt-get -qq install libgomp1 && cd /mnt && ./Run.sh'
output
フォルダに sample1_syn.wav
が出力されていれば成功です。
コンテナイメージを作成して実行する
http://docs.docker.jp/engine/reference/builder.html
毎回 apt-get
が発生するのは無駄ですのでコンテナイメージを作成します。
コンテナイメージをビルドします。-t
オプションで任意のタグを付けることが出来ます。 NEUTRINO 用の Dockerfile
は私が作成したものを
NEUTRINO Dockerfile · GitHub に置いてありますのでそちらをお使いください。
docker build -t neutrino https://gist.github.com/mattintosh4/fa40ed13ed5cfada1e2c514581c667ba.git
コンテナイメージが作成されていることを確認します。
docker images
Ubuntu をベースにしたため二つのコンテナイメージが表示されます。
REPOSITORY TAG IMAGE ID CREATED SIZE neutrino latest da20b51cc875 1 minutes ago 93.3MB ubuntu 18.04 72300a873c2c 10 days ago 64.2MB
以降は ubuntu:18.04
ではなく neutrino
(コンテナイメージのタグを kiritan
とした場合は kiritan
)で実行することが出来ます。コンテナイメージ内で libgomp1 のインストールは済んでいるため省略することができます。
docker run --rm -v ~/Downloads/NEUTRINO-MAIN-Linux:/mnt neutrino /bin/bash -c 'cd /mnt && ./Run.sh'
おまけ
AIきりたんラッパー.app
Wine と Docker それぞれで GUI で NEUTRINO にパラメータを送れるアプリケーションを作成しました。ご自由にお使いください。