voispire
Alpha Version
コマンドラインで動作するボイスチェンジャーです。
使用方法
引数なしで実行するとサブコマンド一覧が表示されます。
NAME:
voispire - ボイスチェンジャー
USAGE:
voispire [global options] command [command options] [arguments...]
DESCRIPTION:
ピッチシフトに用いる基本周波数の抽出に
「音声分析変換合成システム WORLD」
https://github.com/mmorise/World を使用しています。
AUTHOR:
but80 <mersenne.sister@gmail.com>
COMMANDS:
version, v バージョン情報を表示します
device, d オーディオデバイス一覧を表示します
start, s ストリーミングを開始します
convert, c ファイル変換を開始します
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
start
サブコマンド
現バージョンでは、start サブコマンドはフォルマントシフトのみ使用できます。ピッチシフトはできません。
NAME:
voispire start - ストリーミングを開始します
USAGE:
voispire start [command options] [ <input-device> [ <output-device> ] ]
OPTIONS:
--formant value, -f value フォルマントシフト量 [半音] (default: 0)
--verbose, -v 詳細を表示
--debug デバッグ情報を表示
voispire start -f 3
のようにすると、デフォルトのオーディオデバイスでストリーミングが開始されます。
マイク等から入力された音声のフォルマントが3半音シフトされ、ヘッドホン等から変換後の音声が出力されます。
次項に説明する device
サブコマンドで確認できるデバイスIDを指定すると、任意のオーディオデバイスを使用できます。
voispire start -f 3 10 11
のようにすると、ID=10 の入力デバイス および ID=11 の出力デバイスが使用されます。
device
サブコマンド
voispire device
でオーディオデバイス一覧が表示されます。
使用するデバイスIDを控えてから start
サブコマンドに使用してください。
入力デバイス・出力デバイスはそれぞれIDと対応するデバイスが異なることにご注意ください。
convert
サブコマンド
NAME:
voispire convert - ファイル変換を開始します
USAGE:
voispire convert [command options] <input-file> [ <output-file> ]
OPTIONS:
--formant value, -f value フォルマントシフト量 [半音] (default: 0)
--verbose, -v 詳細を表示
--debug デバッグ情報を表示
--transpose value, -t value ピッチシフト量 [半音] (default: 0)
--frame-period value, -p value フレームピリオド [msec] (default: 5)
--rate value, -r value 出力サンプリング周波数(省略時は入力と同じ) (default: 0)
voispire convert -t 6 -f 3 input.wav output.wav
のようにすると、音声ファイル input.wav
を6半音ピッチシフト・3半音フォルマントシフトして output.wav
に保存します。
<output-file>
を省略すると、デフォルトの出力デバイスで直接音声が再生されます。
ビルド
必須環境
- 以下のいずれかのOS
- Windows + MinGW
- macOS
- Linux
- 以下のライブラリ
- Go 1.12
ビルド手順
go run mage.go build
技術情報
ピッチシフト
だいぶ端折った処理ですが、多分 Melodyne と同じ方式 です。フォルマントも一緒にずれるので、ピッチシフト量の引数の分だけフォルマントシフト量からマイナスすることで、結果的にキャンセルしています。
フォルマントシフト
「周波数スペクトルにその包絡線の逆数をかけて一旦キャンセルし、シフトした包絡線をかけ直す」方法でフォルマントシフトを実装しています。
周波数スペクトルの包絡線はケプストラム分析によって抽出していますが、繰り返しこの処理を行うことで、より理想的な包絡線に漸近させる工夫を施しています。
TODO
- ピッチシフト
- WORLD のGo化とストリーミング
- 発話開始箇所のプチノイズ軽減(f0の先読み)
- フォルマントシフト
- 連続FFT処理
- 自動ビルド・リリース
- GUI
License
BSD 3-Clause License