経緯
rakuten hand 5gを貰ってみたものの、特に使い道がなかったのでずんだもんにしゃべってもらうことにした
本文
termuxから音を出すまで
fdroidからインストール
Fdroidをインストールしリポジトリの更新が終わった後、termuxを検索し、”termux Terminal emulator with packages”というものをインストールします。
インストールが終わった後termuxを起動すると文字とキーボードがある画面が表示されたら成功です。
termuxの下準備
pkg update
アップデートしているとき新しいものに置き替えるか、そのままにするか聞かれますが、どちらでもいいです
pkg install git proot wget vim pulseaudio -y
必要なパッケージをインストールします。
echo "pulseaudio --start --exit-idle-time=-1" >> .bashrc &&echo "pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.2 auth-anonymous=1">> .bashrc && echo "bash ./ubuntu-in-termux/startubuntu.sh" >> .bashrc
音声を出すのに必要な設定と、この後入れるubuntuを自動起動するための設定です。
ubuntuを入れる
termuxだけではvoicevoxを使うのに必要な機能が足りないのでubuntuというものを上に乗っけます。
git clone https://github.com/MFDGaming/ubuntu-in-termux.git
cd ./ubuntu-in-termux
ubuntuを入れるスクリプトをダウンロードし、ダウンロードしてきたフォルダーに移動します。
bash ./ubuntu.sh
必要なものをダウンロードするか聞かれるので、Yを押します。
ubuntuの設定
初期設定
bash ./startubuntu.sh
今回は手動でubuntuを起動しますが、次回からは自動でやってくれます。
apt update && apt install vim sox sudo pulseaudio wget git cmake curl python3-pip p7zip-full build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev vlc -y
必要なものをインストールします。
sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'
作業用ユーザーを追加
今までrootで作業をしてきましたが、rootだと音を出せないので、新たなユーザーを作りそのユーザーとして作業します。
今回は名前をnanasiにしますが、別の名前でも大丈夫です。
useradd -D -s /bin/bash
デフォルトシェルがshになっている(古い、使いづらい)のでbashにします。
useradd nanasi -m
passwd nanasi
ユーザーを作成します。-mオプションはホームフォルダを作るオプションです。
そのあとパスワードを設定します。簡単なものでいいです。
echo "nanasi ALL=(ALL) ALL">> /etc/sudoers
なぜかsudoグループにnanasiを追加できなかったので、怒りの直書きです。
理由を知っている人は教えてください
echo "cd /home/nanasi && su nanasi" >> .bashrc
こんどから起動時に自動的にnanasiになります。
作業ユーザーの設定
音が出るように設定します。
su nanasi
cd
nanasiになり、ホームフォルダに移動します。
echo "export PULSE_SERVER=127.0.0.2 /nalias cvlc='cvlc --play-and-exit'" >> .bashrc
音を出すための設定を追加します。
ここまで来たらAndroidの通知欄からexitしてもう一度termuxを起動してください。
androidのホームに戻っても止まりません
音が出るかテスト
wget https://sound.jp/musicyou/s/Peak_test_A.wav
テスト音声を拾ってきます。
cvlc --play-and-exit Peak_test_A.wav
ここまで正しく設定していれば多少ノイズが乗りながら、音楽が流れるはずです。
pythonのインストール
wget https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.xz
xz -dc Python-3.11.1.tar.xz | tar xfv -
cd Python-3.11.1
./configure
make -j8
sudo make altinstall
python3.11をダウンロードし,ビルドしインストールします。
スレッド数が8無い場合は減らしてください
voicevoxの設定
voicevoxエンジン
cd
git clone https://github.com/VOICEVOX/voicevox_engine
ホームディレクトリに戻りvoicevoxエンジンをダウンロードします
python3.11 -m pip install -r requirements.txt
必要なライブラリを入れます。
voicevoxコア
wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.3/download-linux-arm64
chmod +x ./download-linux-arm64 && ./download-linux-arm64
VOICELIB_DIR=/home/nanasi/voicevox_engine/voicevox_core/
python3.11 ./run.py --voicelib_dir=$VOICELIB_DIR
合成する
前のコマンドを中断せずホーム画面に戻りtermuxのアイコンを長押しし、New sessionを選んでください
echo -e "#\\!/bin/bash\n\n# 引数が指定されているか確認\nif [ \$# -eq 0 ]; then\n echo \"エラー: 引数が必要です。\"\n exit 1\nfi\n\n# 引数を使ってcurlコマンドを実行\ncurl -s -X POST \"127.0.0.1:50021/audio_query?speaker=1\" --get --data-urlencode \"text=\$1\" > query.json\n\ncurl -s -H \"Content-Type: application/json\" -X POST -d @query.json \"127.0.0.1:50021/synthesis?speaker=1\" > audio.wav\nplay audio.wav" > gousei.sh
gousei.shを作ります。
bash ./gousei.sh "おめでとうございます!成功です"
ほかの文章に変えて合成ができることを確認してください
日本語入力をするにはキーボードの上のtemuxの追加のボタンがあるところを左にスワイプします。
まとめ
rakuten hand 5g君でやったところ(多分)メモリ不足でカックカクになったが、一応合成はできた
pixel6aを使ったところ快適に合成ができた。