⛳
コマンドプロンプトからVOICEROIDを喋らせる
概要
VOICEROIDって良いですよね。
Discordの会話でぜひ使いたい!でも喋らせるたびに再生ボタンをいちいちクリックするのは面倒くさい...。
そこで、コマンドプロンプトからテキストを入力してエンターを押すだけでVOICEROIDに喋らせられるプログラムを書いてみました。
仕組み
プログラム側からは SeikaSay2 コマンド経由で AssistantSeika へメッセージを送り、AssistantSeika を通じて VOICEROID を喋らせます。そのため、予め AssistantSeika のインストールが必要になります。
ディレクトリ構成
AssistantSeika フォルダにある「SeikaSay2」フォルダをそのまま入れておきます。プログラム自体は vc.js に書きました。
/
| - SeikaSay2
| - vc.js
コード
node.js で雑に実装しました。
やってることは seikasay2 コマンドにテキストを渡しているだけです。
const readline = require('readline');
function question(question) {
const readlineInterface = readline.createInterface({
input: process.stdin,
output: process.stdout
});
return new Promise((resolve) => {
readlineInterface.question(question, (answer) => {
resolve(answer);
readlineInterface.close();
});
});
};
async function inputMessage() {
return await question('> ')
}
function speak(talkMessage) {
// cidはキャラクターによって異なります
const command = process.cwd() + '/SeikaSay2/seikasay2 -cid 2004 -t ' + talkMessage;
require('child_process').exec(command, { encoding: 'Shift_JIS' }, (err, stdout, stderr) => {})
}
(async () => {
while (true) {
const message = await inputMessage();
speak(message);;
}
})();
使い方
- コマンドプロンプトから本フォルダまで移動
- node vc.js で起動
- テキストを入力してエンターで発声
- ctrl + c でプログラム終了
Discord等で使うには
VB CABEL のような仮想オーディオデバイスに音声を流して、それを Discord のマイク入力にすることで利用することが出来ます。
ちなみに VB-Audio VoiceMeeter banana を使うと自分の声と VOICEROID の声を同時に流すことも出来ますが、VoiceMeeter banana の解説は量が多いのでググってみて下さい。
まとめ
楽しかったです。
Discussion