mattintosh note

どこかのエンジニアモドキの備忘録

MacでAIきりたんを動かしてみた。(CatalinaでもOK)

『AI きりたん NEUTRINO』が話題に上がっていたので Wine と Docker で検証してみました。将来的には Mac にも対応する可能性が高いのであまり急ぐ必要はないかもしれません。

ターミナルの操作がよくわからないという方向けに GUI アプリケーションを作りましたのでご自由にお使いください。

Mac向けAIきりたんラッパーの説明 - mattintosh note

f:id:mattintosh4:20200228151509p:plain

AI きりたん/NEUTRINO をどうやって macOS で動かすか

いまのところは何かしらを経由して動かすことはできるようです。

ざっくりですが、以下のような方法で実行出来ると思います。(いつもどおりの選択肢ですね)

それぞれのメリット・デメリットはネット上に情報がたくさんありますのでここでは割愛します。既にいずれかの環境をお持ちであればその環境で実行されるのが最も手っ取り早いと思います。

私はメイン機が Kubuntu なので Windows 版を Wine 経由、または Linux 版をそのまま使わせていただいてますがいまのところ特に問題はありません。

VirtualBoxParallels などの仮想環境系については既に情報がたくさんあり、AI きりたん/NEUTRINO に関わらず一般的な Windows アプリケーションを動かすのと同じ手順で今更説明する必要はないためここでは取り扱いません。

Wine で使う

例えば「ダウンロード」フォルダに AIきりたん/NEUTRINO の ZIP をダウンロードして展開します。macOS のバージョンによっては展開時に文字化け等のエラーが発生しますが、これを無視してもプログラムの実行には問題ありません。Wine で Windows7-Zip 等を使うことで文字化けが発生せずに展開することが出来ます。

次に、NEUTRINO フォルダまで移動します。

Terminal

cd ~/Downloads/NEUTRINO

Run.batWindows バッチファイル形式なのでコマンドプロンプト経由で渡します。

Terminal

wine cmd /c Run.bat

Catalina の場合は wine64 で呼び出す必要があります。

Terminal

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 として配置して実行権限を付与します。

Terminal

cd ~/Downloads/NEUTRINO
chmod +x Run.sh

実行前にまずはヘルプを確認してください。

Terminal

./Run.sh -h

例えば次の表で示すような設定をしたいとします。

項目 オプション
ベース名 My Song -b "My Song"
スレッド数 最大 -n 0
モデル YUKO(謡子) -m YUKO
ピッチ 1.2 -p 1.2

それぞれのオプションを引数として渡します。指定するオプションの順番は順不同ですので好きな順に並べていただいてかまいません。

Terminal

./Run.sh -b "My Song" -n 0 -m YUKO -p 1.2

オプションは他にも色々あるようですがプログラムが 3 種類あり、オプション文字が被っていたりするので Run.bat で変数になっていた部分に留めてあります。

システム上の Wine が検出出来ない場合は環境変数 WINE に実行ファイルのパスを与えることで任意の場所にある Wine を使用することが出来ます。

Terminal

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 となりますので注意してください。

Terminal

cd ~/Downloads/NEUTRINO-MAIN-Linux
chmod +x Run.sh bin/*

コンテナを起動して実行します。

Terminal

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 が出力されていれば成功です。

コンテナイメージを作成して実行する

毎回 apt-get が発生するのは無駄ですのでコンテナイメージを作成します。

コンテナイメージをビルドします。-t オプションで任意のタグを付けることが出来ます。 NEUTRINO 用の Dockerfile は私が作成したものを NEUTRINO Dockerfile · GitHub に置いてありますのでそちらをお使いください。

Terminal

docker build -t neutrino https://gist.github.com/mattintosh4/fa40ed13ed5cfada1e2c514581c667ba.git

コンテナイメージが作成されていることを確認します。

Terminal

docker images

Ubuntu をベースにしたため二つのコンテナイメージが表示されます。

Result

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 のインストールは済んでいるため省略することができます。

Terminal

docker run --rm -v ~/Downloads/NEUTRINO-MAIN-Linux:/mnt neutrino /bin/bash -c 'cd /mnt && ./Run.sh'

おまけ

AIきりたんラッパー.app

Wine と Docker それぞれで GUI で NEUTRINO にパラメータを送れるアプリケーションを作成しました。ご自由にお使いください。

mattintosh.hatenablog.com