ある日、abema.tvを見ていて男は思った。
「ラッパーになりたい!」
tl;dr
- Windowsの合成音声で音素のファイルを作成。
-
Tone.js
で任意の言葉をつなげて再生し、ラップさせる。 - http://uniqode.qiita.s3-website-ap-northeast-1.amazonaws.com/rap/1/
音声ファイルの準備
- Windows10環境では下記をPowershellプロンプトで実行し、wavファイルを生成する。
- MacOSXな人は、
Say
コマンドでも使ってください。
Add-Type -AssemblyName System.speech
$speak = New-Object System.Speech.Synthesis.SpeechSynthesizer
0x3041..0x3093 | %{ # ぁ~ん
$s = [string][char]$_
$speak.setOutputToWaveFile("$($s).wav")
[void]$speak.Speak($s+"ー")
}
- 通常の日本語環境なら
Microsoft Haruka Desktop
の声になっていると思います - 下記コマンドでインストールされている音声を確認し、設定するもよし。
$speak.GetInstalledVoices() | ?{$_.VoiceInfo.Culture -eq "ja-JP"} | %{$_.VoiceInfo}
$speak.SelectVoice("Microsoft Haruka Desktop")
- 出来上がったwavファイルを ffmpeg でmp3とoggに変換します。
gci *.wav | %{$f=$_.fullname;$g=$f -replace ".wav$",".mp3"; cmd /c "C:\path\to\ffmpeg.exe -i $($f) -af silenceremove=1:0:-60dB $($g)"}
gci *.wav | %{$f=$_.fullname;$g=$f -replace ".wav$",".ogg"; cmd /c "C:\path\to\ffmpeg.exe -i $($f) -af silenceremove=1:0:-60dB $($g)"}
Tone.jsでしゃべらす
- http://uniqode.qiita.s3-website-ap-northeast-1.amazonaws.com/rap/1/
-
push
を押すと、、M.C. MS Haruka a.k.a. Windows
のラップが! おれがえむしーえむえすはるかーーこのこえがきみにとどきますかーー
- 単純に一定のリズムで再生しているだけです。HTMLソース見てもらえば、
Tone.js
のおかげで簡単なコードしか書いていないと分かります。 - おまけとして、Text入力欄に
とどいたぜーそのこえがーーとどろかせーおとのれんさーー
などと入力して、push
しなおせば、任意のラップができます(対応はひらがなのみ)!
反省/まとめ
- じゃじゅじょ、などの拗音付きの音は個別に準備した方がよさそう…
- Tone.jsのサンプラーを使えばピッチ指定も出来て、よりリアルに出来るのでは
- part2でさらなる改善を図りたいです。改善案のコメントをください!
- Respect to Cylob Rewind !