【前準備】
ffmpegのパスが通っていること。
取ってなければ、ffmepg で検索して、スクリプトを絶対パスに変える。
VOICEVOX.AppImage を /opt/voicevox_nogui フォルダに解凍しておく。
VOICEVOX.AppImage が解凍ソフトで開けない場合は、拡張子を、zipに変えると、解凍できる。
VOICEVOX.AppImage -> VOICEVOX.zip
/opt/voicevox_nogui
┣run
┣voicevox
とかいろいろと入っていること。
あとは、下記のスクリプトと同じフォルダに、動画用の画像の img.bmp と、しゃべってもらう文字を text.txt をやっぱり、同じフォルダに入れておく。
【スクリプト】
#!/bin/bash
SCRIPT_DIR=$(cd $(dirname $0); pwd)
cd "${SCRIPT_DIR}"
killall run
timeout 600 nice -n 20 '/opt/voicevox_nogui/run' --cpu_num_threads 1 &> /dev/null &
# 動作チェック 30秒起動を待つ
echo '1. start process'
for i in {1..30} ; do
ver=`curl -s -X GET "127.0.0.1:50021/version"`
if [ -n "${ver}" ]
then
echo " VoiceVox ${ver} Start!"
break
fi
sleep 2
done
echo '2. text creation'
No=29
nice -n 20 curl -s \
-X POST "localhost:50021/audio_query?speaker=${No}" \
--get --data-urlencode text@text.txt > './_query.json'
echo '3. voice generation'
nice -n 20 curl -s \
-H "Content-Type: application/json" \
-X POST -d @_query.json \
"localhost:50021/synthesis?speaker=${No}" \
> './_voice.wav' && killall run
# 動画作成
echo '4. video creation'
ffmpeg -y -loop 1 -r 15 \
-i ./img.bmp -i ./_voice.wav -vcodec libx264 \
-acodec mp3 -strict experimental -ab 320k -ac 2 -ar 48000 \
-pix_fmt yuv420p -shortest './_movie.mp4'
echo '5. completion'
#
【実行/ダウンロード】
上記のスクリプトを、 makeMovie.sh に保存する。
同じフォルダに、動画用のための画像の img.bmp、しゃべってもらう文章を text.txtに入力。
で、端末を立ち上げて、実行。
- start process
VoiceVox “0.14.6” Start! - text creation
- voice generation
- video creation
(中略 ffmpeg の動画変換出力) - completion
【その他】
スクリプト中の、No=29 は、ナンバーセブン というキャラクタです。
詳しくは、Helpから。
usage: run [-h] [–host HOST] [–port PORT] [–use_gpu]
[–voicevox_dir VOICEVOX_DIR] [–voicelib_dir VOICELIB_DIR]
[–runtime_dir RUNTIME_DIR] [–enable_mock]
[–enable_cancellable_synthesis] [–init_processes INIT_PROCESSES]
[–load_all_models] [–cpu_num_threads CPU_NUM_THREADS]
[–output_log_utf8]
[–cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}]
[–allow_origin [ALLOW_ORIGIN [ALLOW_ORIGIN …]]]
[–setting_file SETTING_FILE]
VOICEVOX のエンジンです。
optional arguments:
-h, –help show this help message and exit
–host HOST 接続を受け付けるホストアドレスです。
–port PORT 接続を受け付けるポート番号です。
–use_gpu 指定するとGPUを使って音声合成するようになります。
–voicevox_dir VOICEVOX_DIR
VOICEVOXのディレクトリパスです。
–voicelib_dir VOICELIB_DIR
VOICEVOX COREのディレクトリパスです。
–runtime_dir RUNTIME_DIR
VOICEVOX COREで使用するライブラリのディレクトリパスです。
–enable_mock 指定するとVOICEVOX COREを使わずモックで音声合成を行います。
–enable_cancellable_synthesis
指定すると音声合成を途中でキャンセルできるようになります。
–init_processes INIT_PROCESSES
–load_all_models 指定すると起動時に全ての音声合成モデルを読み込みます。
–cpu_num_threads CPU_NUM_THREADS
音声合成を行うスレッド数です。指定しないと、代わりに環境変数VV_CPU_NUM_THREADSの値が使われ
ます。VV_CPU_NUM_THREADSが空文字列でなく数値でもない場合はエラー終了します。
–output_log_utf8 指定するとログ出力をUTF-8でおこないます。指定しないと、代わりに環境変数
VV_OUTPUT_LOG_UTF8 の値が使われます。VV_OUTPUT_LOG_UTF8
の値が1の場合はUTF-8で、0または空文字、値がない場合は環境によって自動的に決定されます。
–cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}
CORSの許可モード。allまたはlocalappsが指定できます。allはすべてを許可します。locala
ppsはオリジン間リソース共有ポリシーを、app://.とlocalhost関連に限定します。その他のオリジ
ンはallow_originオプションで追加できます。デフォルトはlocalapps。
–allow_origin [ALLOW_ORIGIN [ALLOW_ORIGIN …]]
許可するオリジンを指定します。スペースで区切ることで複数指定できます。
–setting_file SETTING_FILE
設定ファイルを指定できます。