歌うソフトはじめました

投稿日:2019年04月15日 08時12分10秒

仕事が忙しくて間が開いてしまいました。
趣味も兼ねてUTAUや初音ミクのような歌うソフトを作り始めました。
単音のwavファイルについて、まずは音程をコントロールして歌にします。
最初のアプローチでは音声から1波形を取り出して引き伸ばす方法を考えたのですが、実験してみるととても人工的すぎます。後で知ったのですが音声にはゆらぎがあってこれがないと声に聞こえないのですね。
なので1音素をアタック、サスティン、リリースに分解してサスティン部分をなが~くすることに。
元の音素の周波数を抽出し指定周波数に正規化しサスティン部分の長さを変えています。
とりあえずサンプルはこれです。





実行ファイルとして64bit linux版とwindows版(32bit)を用意しました。
Uta [csvファイル] [出力wav]
とすればlinuxでもwindowsでも出力されるかと思います。出力はwav飲みです。CSVの内容は
wavファイル 音階 出力秒数となっていて
ki.wav C4 1
ra.wav C4 1
ki.wav G4 1
ra.wav G4 1
hi.wav A4 1
ka.wav A4 1
ru.wav G4 2
こんな感じです。サンプルのwavファイルしか入っていませんが44KHzのモノラルwavファイルで100Hzから441Hzの間の声なら正規化します。先頭や最後の空白は除去しますがノイズがあったらどのようになるかは試してないのでわかりません。
音階は以下が定義されています。
#define G3 196.0
#define A3 220.0
#define B3 246.9
#define C4 261.6
#define D4 293.7
#define E4 329.6
#define F4 349.2
#define G4 392.0
#define A4 440.0
#define B4 493.9
#define C5 523.3
#define D5 587.3
#define E5 659.3
音量と高音に変換したときの機械臭さは次回にでもやろうかと思います。
linux版で16kb,windows版で80kbくらいの実行ファイルです。つまりは殆ど何もしてないようなものなので処理はかなり早いです。
興味がある方は音源など作って頂けると幸いです。
ご意見も募集しております。

[<< え?不正なURI文字列?]

[PLSQL面白い >>]