pythonでリアルタイムのボイスチェンジャーを作る

概要

ボイスチェンジャーをpythonで作ります。

やることは、以下の2つ。

  1. リアルタイムで音声を処理する
  2. 音声を変換する

1についてはsounddeviceというライブラリを使います。

2はピッチシフトという技術を使います。これは入力された音声に対して、全体の長さはそのままにピッチを変化させる技術です。オクターブを上げたり下げたりするイメージです。

こちらはlibrosaを用いて簡単に書けます。librosa.effects.pitch_shiftを用います。

例えば、自然な異性の声を出したい場合や、特定の個人の声質で話したい場合などには、深層学習を用いた手法が必要になります。

その場合には処理にある程度時間がかかるので、リアルタイムな会話などはまだ難しいと思います。

プログラム

実際のプログラムは以下の通りです。

1オクターブあげて音声を変換しています。警察24時での犯人の声みたいになります。

パソコンで動かす場合は、ハウリングしないようにイヤホンを付けるなどの対策が必要です。

入力、出力ともに2チャンネルになるようにしています。

コメント

  1. ぱなっぷ より:

    すごく参考になりました。

    12オクターブ上げると書いてますが、正しくは1オクターブ(12半音?)だと思います。
    1オクターブ=ドレミファソラシド=周波数が2倍
    なので、12オクターブあげると周波数が4096倍になってしまいます