COEIROINK(CPU)をクラウド対応するまでにやったこと(Docker上で動かせるようにするまで編)
すぐに使いたい人向け
Dockerfileがこちらにあります
はじめに
個人開発でモバイル端末からText To Speechを使いたい需要が発生したため、キャラクターの音声合成を使える COEIROINK をクラウド上で動作させることにしました。
その時にどのようなことをやったかを今回まとめることにしました。
長くなりそうなので、この記事ではまずDocker上で動かせるようにするまでにやったことをまとめています。
Docker上で動かせるようにするまでにやったこと
1. LinuxでCOEIROINKを試す
ひとまずLinux (著者が使用した環境はUbuntu on WSL2)上でCOEIROINKを動かせるようにしていきます。
参考にさせていただいた記事はこちら。
依存パッケージのインストール
まずは apt-get
で依存パッケージを先にインストールしておきます。
apt-get update
apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl \
git unzip cmake
Pythonの環境
今回はPythonの環境を以下のツールを用いて構築しました。
- Python バージョン管理 :
asdf
- パッケージ管理 :
pip
- 仮想環境 :
venv
環境は好きなものを使ってもらって大丈夫です。
asdfについては以下の手順でPython pluginまでを入れておきます。[1]
# クローンしてPathを通す
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.11.1
echo ". "$HOME/.asdf/asdf.sh"" >> ~/.bashrc
echo ". "$HOME/.asdf/completions/asdf.bash"" >> ~/.bashrc
source ~/.bashrc
# Python pluginをインストール
asdf plugin-add python
COEIROINKのリポジトリをCloneしてくる
COEIROINKリポジトリ
COEIROINK1.7系のブランチが存在しますが、ライブラリ間の依存関係の解決ができないため、c-1.6.0+v-0.12.3
ブランチを使用します。
git clone -b c-1.6.0+v-0.12.3 https://github.com/shirowanisan/voicevox_engine.git
cd voicevox_engine
Python 3.8.10のインストールとローカルバージョンの指定
asdf install python 3.8.10
asdf local python 3.8.10
パッケージのインストール
requirements.txt
だけではパッケージが不足しているため、追加で必要なパッケージもインストールしていきます。
python -m venv venv
source ./venv/bin/activate
pip install typing-extensions==4.5.0
pip install -r requirements.txt
pip install espnet resampy typeguard==2.13.3
話者データのダウンロード
ここ から好きな音声データをダウンロードしてきます。
今回は つくよみちゃん を使用します。
mkdir speaker_info
wget -O tsukuyomi_chan.zip https://www.dropbox.com/s/lvxit2svbi1dvdf/3c37646f-3881-5374-2a83-149267990abc.zip?dl=1
unzip tsukuyomi_chan.zip -d speaker_info
起動
run.py
を以下の形で実行して localhost:50031/docs で Swagger UIが表示されれば起動成功です。
python run.py --host 0.0.0.0
COEIROINKのAPIはポートが 50031
になります。(VOICEVOXの 50021 とは違うポートになります)
2. Docker imageを作成する
基本的には1で行ってきたことをDockerfileにまとめればOKです。
また、Docker上でPythonを実行するため仮想環境の構築などは省いてよいです。
まとめたものが こちら になります。
Dockerfileを適当なディレクトリに配置し、イメージをビルドしていきます。
docker build . -t coeiroink
最後に、docker run して、 localhost:50031/docs で Swagger UIが表示されれば起動成功です。
docker run -p 50031:50031 --name coeiroink_process coeiroink
終わりに
ここまでdocker上でCOEIROINKを動かせるようにするまでをまとめてみました。先駆者様の記事には本当に感謝です。
最終的にGCPのCloud runで動かせるようにしますが、その辺は次回以降にまとめようかと思います。
昨今、ChatGPTなど生成AIの登場で、音声合成を一緒に使うユースケースが増えてきていると思うので、この記事がそのような方の助けになれば幸いです。
Discussion