2018年9月4日火曜日

PythonでVOICEROIDを使う簡単な方法

VOICEROIDをプログラミングでしゃべらせたい!
というわけで、簡単に動かす方法を紹介します。
※Windows only




女の子の声に好きなことをしゃべらせられるVOICEROID。
PythonでVOICEROIDを自由自在に動かせたら、プログラミングが楽しくなるんじゃないかなぁ。プログラミングを勉強したいってプログラミング初心者もVOICEROIDを動かせるとなれば勉強しがいがありそうですしおすし。


調べてみると、んー。。。
Windowsに表示されているウィンドウの情報を手に入れて、その中で、ボタンの情報を手に入れて....難しそうだなぁ。

ソースコードを読んでいけばできなくはないでしょうが、初心者向きじゃないってことで簡単な方法を探してみる。

というわけで、今回注目したのは、努力したWiki様制作のSeikaCenterおよび、Seikasay.exe。コマンドラインからVOICEROIDを使えるそうです。
すげー。
努力したWiki様HP

ところでPython、コマンドラインに入力するモジュールがあるんっすよねー。
あれ、いけそうじゃん。
ではでは琴葉茜ちゃんに「茜ちゃんかわいいって言って」って言わせてみましょう。
さくっとプログラミング。


import subprocess as sps #モジュールsubprocessをインポート

text = "茜ちゃんかわいいって言って"

cmd = 'seikasay.exe -cid ' + "2000" + ' \"' + text + '\"' #seikasayに送るコマンド

sps.call(cmd,shell=True) #subprocessを使って、コマンドプロンプトにコマンドを送る


<使い方>
・Seikasay関連を作業ディレクトリーにコピー
・Seikacenterを起動してしゃべらせたいVOICEROIDのIDを手に入れる(茜ちゃんは多分2000)
・プログラムを起動する
・アカネチャンカワイイヤッター

いいねいいね。かなり簡単にできますね。
今回利用したのはsubprocessというモジュールですね。
subprocess.callは入力したコマンドを実行するモジュールですね。今回は文字列を入力しましたが、配列でもおっけーらしいです。


それじゃあ、ちょっと使いやすく手直ししていきましょう。

import subprocess as sps

def talk_voiceroid(ID,p,text){

    cmd = 'seikasay.exe -cid ' + ID + ' -speed ' + p[0] + ' -pitch ' + p[1] + ' -intonation ' + p[2] + ' -happiness ' + p[3] + ' -hatred ' + p[4] + ' -sadness ' + p[5] + ' \"' + text + '\"'

    sps.call(cmd,shell=True)

}
id = "2000"

parameter = ["0.80","0.80","1.00","0.30","0.00","0.00"]#話速、高さ、抑揚、喜び、怒り、悲しみ

text = "あおいー、なんかあるでー、あおいー"

talk_voiceroid(id,parameter,text)


こんな感じで関数にしちゃえば、プログラムの中で使いやすいですね。調整もパラメータをいじるだけなので簡単です。id、parameter、textはすべてstr型になるように気を付けてください。これで、Pythonで自由自在にVOICEROIDを使えます。やったね。


いやはや、Seikasay.exe素晴らしいですね。おかげで日々楽しくPythonの勉強ができています。VOICEROIDを使ったソースコードがいろいろたまっているので、順々にアウトプットしていきたいなぁ。(そのためにもコードの乗せ方は考えないと...)

1 件のコメント:

  1. SeikaSayのオプションから感情パラメータ用の引数3つは非推奨となります。
    -emotion オプションへ変更される事を推奨いたします。

    返信削除