概要
合成音声を使ってリアルタイム録音で美少女の声に変換し、VCに参加するシステムを構築してみたので紹介する。
想定読者
- Pythonを用いた美少女VCに興味があり、必要なライブラリが知りたい人
- 言語はどうでも良いので大体のシステムの流れを知りたい人
具体的な実装コードは自分の有しているコードを流用したためこの記事では紹介しない。具体的な実装が気になる人はTwitterのDMを解放しているので、相談して欲しい。
技術選定と構成の決定
技術構成は以下になる。
- Python
- sounddevice pythonで指定したデバイスに音声を出力
- scipy bytesデータになっているwavデータをbufferに変換
- speech_recognition マイクから入力された情報をテキストデータに変換
- PyAudio speech_recognitionの依存ツール
- COEIROINKAPI 与えられたテキストデータを合成音声に変換しbytesデータとして送信
合成音声ソフトはVOICEVOXエンジンを用いた。COEIROINKはその中でもかわいい声があったのでこれにした。技術要件的にCOEIROINKである必要性はなく、VOICEVOXエンジンであれば問題ない。極論同じoutput(wavのbytesデータ)であれば他のエンジンでも良い。
COEIROINKはソフトを起動するとローカルAPIが経つ仕組みになっているので、APIにテキストデータ(今回の場合はマイクで話した内容)を渡せば音声データが返ってくる。APIで与えられる音声データはbytes形式のため、書き出さずに再生するためにはscipyが必要になる。他に変換できるライブラリがあるなら、それに変えても問題ない。
主な処理の流れ
- マイクから音声認識を行いテキストデータに変換
- テキストデータをCOEIROINKのAPIに送信
- 受信したwavのbytesデータをbufferに変換
- bufferをsounddeviceで仮想マイクに出力
- 仮想マイクを美少女で話したい任意のVCのマイクに設定
備考
こちら側で実装する必要のあるものは音声認識・bytesデータの再生の二つのため、この二つの要件が達成できるのであればNode.js等他のバックエンド言語でも可能。COEIROINKのAPIをクラウドに載せることができればGPU資源も不要になるので必要なマシンスペックは相当低くできる。
まとめ
利点としてMMVCなどのリアルタイム変換よりもマシンスペックが必要ないこと、事前準備があまりいらないこと、合成音声のためはっきりした口調であることがある。一方で合成のためのラグが数秒あるためペアプロのような瞬間的なコミュニケーションが必要なものには向かないと思われる。個人的にはこれを流用してナレーションの合成音声化などに使えるのではないかと思ったので、興味がある人は作ってみてほしい。
連絡先