といっても基本的には 今井の作ったスクリプト を実行すれば良く,ここには簡単な日本語訳を書いておく.
しばらくかかる
git clone -b voiceroid https://github.com/tomoki/docker-wine-japanese.git
cd docker-wine-japanese
./builder.sh
実行しているコンテナを次まで終了しないこと.(勝手に消去する設定にしているので)
./make_container.sh
# ここでボイスロイドをいれる. (i.e, wine voiceroid_yukari_dl.exe とか)
# shared_directory は外と中から見れるので,使ってください
# i.e, in host, $ cp voiceroid_yukari_dl.exe shared_directory
# in container, $ wine shared_directory voiceroid_yukari_dl.exe
# to run voiceroid, $ wine start .wine/drive_c/users/wine/Desktop/VOICEROID+\ 結月ゆかり.lnk
あとあと他のマシンと使いまわせるようにしておく. このイメージを公開しないこと.
とりあえずコンテナのidをチェック.
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
24f120fb0db7 tomoki/docker-voiceroid "/bin/sh -c /bin/bash" 3 seconds ago Up 2 second voiceroid_cont
このケースは 24f120fb0db7
.これをイメージにする.
sudo docker export 24f120fb0db7 > voiceroid_docker_image.tar
注: このイメージはUIDを使ってしまっているので,実際には他のマシンでは動かないかもしれない.
cat voiceroid_docker_image.tar | sudo docker import - voiceroid-dock
動かすときには
./launcher.sh
shared_directory にサーバスクリプトがある.
# in host
./launcher_with_port.sh
# in container
wine start .wine/drive_c/users/wine/Desktop/VOICEROID+\ 結月ゆかり.lnk
python3 shared_directory/server.py
# in host URLエンコードすること
# 音声保存
wget "http://localhost:48234?message=hello&speaker=yukari"
# 音声をそのまま話す
wget "http://localhost:48234?message=hello&speaker=yukari&direct=true"
こんな感じのshellscriptが良いかも
#!/bin/sh
encoded=`echo "$1" | nkf -wMQ | sed 's/=$//g' | tr = % | tr -d "\n"`
echo $encoded
curl "http://localhost:48234?direct=true&speaker=yukari&message=$encoded"
なぜか普通のウィンドウでやるととても不安定.なので仮想バッファを使う. まずは以下のシェルスクリプトをshared_directory下に作成.
#!/bin/sh
wine start .wine/drive_c/users/wine/Desktop/VOICEROID+\ 結月ゆかり.lnk
#!/bin/sh
cd /home/wine
echo "Starting Yukari"
./shared_directory/start_yukari.sh
sleep 5
echo "Server is running at port 48234"
python3 shared_directory/server.py
#!/bin/sh
xvfb-run -a /home/wine/shared_directory/exec_yukari_and_server.sh
exec_yukari_and_server_nohead.sh をコンテナ中で実行すればサーバがXなしで立ち上がります.
# in container
$ ./exec_yukari_and_server_nohead.sh
Emacs からゆかりさんをしゃべらせたい?簡単です.
下記のshellscriptをspeak.shとして保存して,
#!/bin/sh
encoded=`echo "$1" | nkf -wMQ | sed 's/=$//g' | tr = % | tr -d "\n"`
echo $encoded
curl "http://localhost:48234?direct=true&speaker=yukari&message=$encoded"
次のEmacsLispでいけます.
(defun speak-yukari (str)
(interactive)
(call-process-shell-command
(concat "/home/tomoki/Dropbox/yuduki/docker/speak.sh " str) nil 0))
(speak-yukari "こんにちは")
githubのissueに書いてください.