とある歌声でない音声にリバーブをかけて歌声にする実験をしました。
【概要】
パルス波を集めて作ったビープ音に「特殊なIR」を読み込んだコンボリューションリバーブを適用して歌声を合成する。
1)IRを作る
今回は母音を生成しようと思うので母音を作るためのIRを作ります。
A.「あ」の波形から2周期を切り出す
B.始めと終わりの1/4をフェード処理
IR完成
2)ビープ音を作る
IRを作るときに使った波形と同じ周波数のビープ音を作ってダイナミクスとピッチの揺れを書く
波形の1周期は純粋なパルス波です。
3)コンボリューションリバーブを掛ける
リバーブに先ほど作ったIRを込みこんでビープ音にかければ歌声の合成は完了。
一回目の合成は「Beep音とIRの周波数が合っていない」&「IRが1周期分でフェード処理なし」
二回目の合成は「IRが1周期分でフェード処理なし」
三回目の合成は「Beep音とIRの周波数があっていて」「IRが2周期分でフェード処理アリ」
です。
スポンサーサイト
くろ州の合成音声備忘録
音声合成とは関係ないのですが、プログラミングの勉強しないとということで、フリーソフトを作りました。
その名も「無機能ブラウザ」
戻るボタンすらないシンプル設計。本体はたったの10KB。すべての操作はショートカットでします。
メリット
・軽い
・余計な機能がついてないからわずらわしさがない
・「目的のことばが調べられればいい」という人向け
・ショートカットが使える人向け
デメリット
・できることが少ない
・ショートカット使えない人には全く使えない
・対応していないWebサービスが多い
・それなりにバグる
C#でプログラミングしました。フォームにWebBrowser貼り付けただけの5分間プログラミングです。README書く方が時間かかりました。
くろ州の合成音声備忘録
UTAU音源を制作していると「モーラ」という言葉に出会います。これは専門用語なのですが、学校では「音節」を習います。
Q「UTAU音源を制作しています」を音節に分けてください。
A う/た/う/お/ん/げ/ん/を/せ/い/さ/く/し/て/い/ま/す
ですね。日本の学校で習う「音節」は「ひらがな一文字のセット」という感じ。ただし「っ」「ゃ」「ゅ」「ょ」は単独で1音節とは認めません。
「モーラ」は「時間軸で考えて一定の拍に収まる音のセット」という感じ。
例えば「目が痛かい」と言った場合、
標準語:めがいたい (5モーラ)
関西弁:めえがいたい (6モーラ)
となります。
標準日本語は大体1音節1モーラで発音されるのであまり差が出ません。そして音韻論で言うところの「拍」と「モーラ」は同じらしいです。
ただし、「っ」「母音脱落したサ行やハ行」「ん」「m」などは一拍分の長さがあれば1モーラとして数えます。ここが音節とモーラの違いの一つです。
UTAU音源を制作している時の発音台本は「Xモーラリスト」と名付けられています。一拍に1モーラ発音するのが基本です。和歌も「5・7・5・7・7モーラ」ですね。
対して、「シラブル」ですが、音韻論上は「音節」と同じですが、「学校で習う音節」とは少し違うのです。
言語によって扱いは変わってきますが、「言いやすい音の区切り」です。
Q「UTAU音源を制作しています」をシラブルに分けてください。
A う/た/う/おん/げん/を/せい/さ/く/し/て/い/まs
実際には明確なルールがありますが大体で言うと、母音脱落した音や二重母音などは一つのシラブルになります。「学校で習う音節」で「っ」「ゃ」「ゅ」「ょ」を単独で1音節と認めないのはこれの影響です。
さらに言うと時間にも影響されないので、「制作=せーさく」は4モーラで3音節(シラブル)です。1拍分の「あ」は1モーラで1音節ですが、2拍分の「ああ(二つ目の『あ』は発音しなおさない)」は2モーラで1音節です。
まとめ
モーラ(拍)とシラブル(音節)の違い
「1拍分の長さがあれば1単位として数える」のが「モーラ」、「発音上区切れるならば1単位として数える」のが「音節」
調声の段階ではモーラとシラブルを意識すると母音脱落・二重母音が見えてきてイイと思います。
くろ州の合成音声備忘録
「正弦波重畳方式」というのは歌声音源の合成方式の一つです。
音というのは波ですよね。いわゆる「音波」です。
そしてその波の形を「波形」と言います。
この音波には「いくつかの正弦波に分解できる」という性質があるのです。
詳しいことや正しいことが知りたい方は「音声 フーリエ解析」とかで検索してみましょう。
正弦波とは? y=sinxのグラフです。
いろんな周期の正弦波=SIN波を畳のように重ねて図1のような波形が作れれば、「中の人のいない音源ができる」ということですね!!
手順1)解析
「あ」の波形はどんな正弦波の組み合わせでできているのかを調べます。ツールはExcel。
こんな感じ。
要するに
344Hz 0.05
689Hz 0.10
1033Hz 0.22
1378Hz 0.18
1722Hz 0.05
くらいの構成になっているのです。
つまり
y=0.05×sin(344×2π)+
0.10×sin(689×2π)+
0.22×sin(1033×2π)+
0.18×sin(1378×2π)+
0.05×sin(1722×2π)
が「あ」の近似式なのです。
実際の合成には「私の好みの音源数種」の平均を用いて、しかもきれいな式になるように数値をいくつか改変して、息成分を少なめにした式を使いました
手順2)数式⇒波形
1)で作った式をグラフに起こします。ツールはGRAPES。
ずいぶんとシンプル。実際の合成ではもっと複雑な式でやりました。
このGRAPESはコマンドで波形を再生してくれる機能があるのでそれでWAVEファイルを作ります。
手順3)1周期切り出し&ループ
できたWAVEから1周期分切り出してループ再生して再録音。ツールはAudacity。これでやっと聞ける感じになってきます。この行程がないととても聞けない。
手順4)ピッチ・ダイナミクスをつける
できた波形は現在こんな感じ。
ピッチに適度な揺らぎを与えて、波形を人の声っぽくトリミングします。ツールはVocalShifter。
黄色がピッチ線、緑がダイナミクスです。これは手書きしています。
結果。
手順5)エフェクト掛け
人らしさがないので、エフェクトでぽくします。ツールはModernExciter(エキサイター)。
人の声に聞こえるようになるまで調整します。これは好み。ここで差が付きます。
完成!!
あ、い、う、え、お、だけ作りました。
くろ州の合成音声備忘録
REAPERは公式で日本語に対応していません。しかしその程度であきらめるのにはもったいなさすぎるので、非公式の日本語化をしましょう。
1)こちらのページから日本語のパックを拾います。
「フォント関連の修正は必要ない・パッチが動かない」の項目の青文字リンクを右クリックして「リンク先を保存」してください。普通にクリックするとコードが出てきます。
2)ダウンロードしたものを右クリック → 「Install language pack for REAPER」的なのを選択
3)REAPERを起動して日本語になっていれば成功
ダメだったらダウンロードしたものを「REAPER.exe」のある所に持って行って2)を実行。
それでもダメなら「REAPER.exe」と同じところにある「Plugins」の中に持って行って2)を実行。
ダメだったらこっちのページのパッチを使います。
緑色の「Clone or download」ボタンを押して「Dounload ZIP」を選択するとダウンロードできます。
あとは解凍して、Language packに対して2)以降を実行
それでもだめなら英語で。