💬

COEIROINK(CPU)をクラウド対応するまでにやったこと(Docker上で動かせるようにするまで編)

2023/10/11に公開

すぐに使いたい人向け

Dockerfileがこちらにあります

https://gist.github.com/sansuke05/c4e79e1815d41f70f962bdf03d9f39f0

はじめに

個人開発でモバイル端末からText To Speechを使いたい需要が発生したため、キャラクターの音声合成を使える COEIROINK をクラウド上で動作させることにしました。

その時にどのようなことをやったかを今回まとめることにしました。

長くなりそうなので、この記事ではまずDocker上で動かせるようにするまでにやったことをまとめています。

Docker上で動かせるようにするまでにやったこと

1. LinuxでCOEIROINKを試す

ひとまずLinux (著者が使用した環境はUbuntu on WSL2)上でCOEIROINKを動かせるようにしていきます。

参考にさせていただいた記事はこちら。

https://zenn.dev/hojicha/articles/a5663b0b3c524a
https://qiita.com/0kq/items/3194f5f3a3fbc541150b

依存パッケージのインストール

まずは 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リポジトリ

https://github.com/shirowanisan/voicevox_engine

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の登場で、音声合成を一緒に使うユースケースが増えてきていると思うので、この記事がそのような方の助けになれば幸いです。

脚注
  1. 参考記事:https://zenn.dev/asopitech/articles/20230201-225956_1 https://qiita.com/craymaru/items/0d22c1c542cf4a8326ee ↩︎

Discussion