2023年01月13日に公開された VOICEPEAK 1.2.1 の新機能として、コマンドラインからテキストファイルを読み込んで .wav を出力出来るようになりました。
VOICEPEAKの使用頻度が高いのですが、テキスト量が30分近くなるとVOICEPEAKエディターが重すぎて改行も大変になります。VOICEPEAKエディターを使用せずコマンドラインから .wav を出力できれば便利だと思ったので、複数のテキストファイルをまとめて .wav にするバッチファイルを作ってみました。
しかし、残念なことに140文字しか読み上げできないため長文には向かないようです。142文字以上になるとファイルを出力しなくなります。この記事は2024年01月17日に公開された VOICEPEAK 1.2.8を使用しています。
https://www.ah-soft.com/voice/setup/
目次
VOICEPEAKのコマンド一覧
Windowsのコマンドプロンプトを起動し、以下のコマンドを実行するとVOICEPEAKで使用できるコマンド一覧が表示されます。
"C:\Program Files\VOICEPEAK\voicepeak.exe" -h
コマンドの内容
- -s : 読み上げるテキスト
- -t : 読み上げるテキストファイルを指定
- -o : wavファイルを出力するパスを指定
- -n : ナレーター名。--list-narratorで使用できるナレーターリストを表示
- -e : 感情。happy=50,sad=50,angry=50,fun=50のように指定
- --list-narrator ナレーターリストを表示。
- --list-emotion ナレーター感情リストを表示
- -h : ヘルプを表示
- --speed : speed=50のように 50 ~200 の範囲で指定
- --pitch : Pitch=50 のように -300 ~ 300 の範囲で指定
ナレーターの確認
--list-narrator を使用するとコマンドラインで使用可能なナレーター名が表示できます。
"C:\Program Files\VOICEPEAK\voicepeak.exe" --list-narrator
- Japanese Male 3
- Japanese Male 2
- Japanese Male 1
- Japanese Female 3
- Japanese Female 2
- Japanese Female 1
VOICEPEAKは有名声優を起用したキャラクターボイスなど様々な商品が販売されていますが、私が使用しているのは「VOICEPEAK 商用可能 6ナレーターセット」です。このセットでは上記のように6種類のナレータがリストされました。
テキストを入力して.wavファイルを出力する例
女性1 (Japanese Female 1) でテキスト読み上げるコマンドの例です。 -s の後に書かれた文字を.wavファイルに出力します。.wav ファイルの出力先は適当に書き換える必要があります。
"C:\Program Files\VOICEPEAK\voicepeak.exe" -s "Voicepeakコマンドラインテスト。" -n "Japanese Female 1" -o "C:\Desktop\Voicepeak出力.wav" -e happy=0,fun=0,sad=0,angry=0
男性2 (Japanese Male 2) で速さとピッチを上げて読み上げるコマンドの例です。
"C:\Program Files\VOICEPEAK\voicepeak.exe" -s "Voicepeakコマンドラインテスト。" -n "Japanese Male 2" -o "C:\Desktop\Voicepeak出力.wav" -e happy=0,fun=0,sad=0,angry=0 --speed=200 --pitch=300
テキストファイルを読み込んで.wavファイル出力する例
.txt ファイルを読み込んで.wavファイルに出力する例です。-t の後に書いたファイルパスを読み込んで.wavファイルに出力します。
"C:\Program Files\VOICEPEAK\voicepeak.exe" -t "C:\Desktop\読み上げ.txt" -n "Japanese Female 1" -o "C:\Desktop\Voicepeakテキスト読み込み出力.wav" -e happy=0,fun=0,sad=0,angry=0
バッチファイルで変換実行
コマンドラインは使い難いので、テキストエディタで編集しやすいバッチを作成して実行する例です。
テキストファイルにコマンドを書いて、ファイルの拡張子を「.bat」にして保存します。
"C:\Program Files\VOICEPEAK\voicepeak.exe" -t "C:\Desktop\読み上げ.txt" -n "Japanese Female 1" -o "C:\Desktop\Voicepeakテキスト読み込み出力.wav" -e happy=0,fun=0,sad=0,angry=0
このときテキストファイルの形式は「シフト JIS」を使用します。UTF-8だとバッチ実行時に文字化けしました。
Windows エクスプローラーで .bat ファイルをダブルクリックするとファイル内のコマンドを実行できます。
同じディレクトリにあるファイルを読み込んで.wavを出力
毎回テキストファイルを編集するのが面倒です。
テキストファイルと同じディレクトリに .bat ファイルをコピーして、ダブルクリックすると .wav を生成するコマンドをAI様に書いてもらいました。
@echo off
setlocal enabledelayedexpansion
REM 同じディレクトリにあるテキストファイルを読み込んで WAV ファイルに出力する
for %%F in ("%~dp0\*.txt") do (
set "input_file=%%F"
REM 出力ファイル名を元のファイル名に基づいて設定
set "output_file=!input_file:.txt=_output.wav!"
REM Voicepeak を使用してテキストファイルを読み込み、WAV ファイルに出力
"C:\Program Files\VOICEPEAK\voicepeak.exe" -t "!input_file!" -n "Japanese Female 1" -o "!output_file!" -e happy=0,fun=0,sad=0,angry=0
echo Voicepeak processing for !input_file! completed. Output saved to !output_file!
)
pause
AI様のコードをテキストエディタで保存。
Windows エクスプローラーでダブルクリックして実行すると、フォイルダ内の .txt ファイルを自動的に .wav に変換できました。
これで複数のテキストファイルをまとめて.wavファイルに出力できるようになりました。
テキストファイルを読み込む -t コマンドは、テキストっぽい形式なら読み込めるようです。.csv や .md ファイルは読み込んで出力可能でした。しかし、.csv はテキストファイルとして読み込むだけでした。
VOICEPEAK 1.2.8 からCSV読み込みに対応しましたが、コマンドラインからはCSV読み込みに該当する機能を使うことはできないようです。
冒頭にも書きましたが、140文字しか読み上げできないのが残念ですね。コマンドラインという素人には使用する難易度が高い操作をユーザーに要求するわりに、VOICEPEAKエディターにはない文字数制限が邪魔です。エディターが重くて使い勝手が悪いのでコマンドラインを使用したかったのですが、何を意図して文字数を制限したのか謎です。
テキストファイルを1行ごとに分割して、まとめて .wav に変換できないか試してみました。