WebAudioAPI

ヴォコーダーを作ってみた

More than 1 year has passed since last update.


じこしょうかい


  • 名前 -> ハル (@Thought_Nibbler)

  • 楽器 -> ベース

  • WebAudioAPI -> 初級者



きっかけ


  • WebAudio.tokyo #2 に参加

  • Advent Calendar の存在を知り参加

  • LTさせていただくことに ← いまここ



今回の内容 = Advent Calendar 12/8



確認(前提知識)


音とは



sin.png


周波数とは


  • 波が単位時間に上下する回数

  • 自然界の音はいろんな周波数の波が混ざっている


周波数スペクトルとは


  • 波の中にどんな周波数の波がどのくらい混じっているかを表したもの

フーリエ変換 - Wikipedia



まずヴォコーダーってなんだ?


  • 人間の声っぽい音(機械的な声)を出す楽器

  • 人間の声≒言葉の発音

YouTube



どうやって声っぽい音を作るか?


  • Q : 音から言葉(文字)を識別するために、人は何を利用しているのか?

  • A : 音(波形)の周波数スペクトル。同じ音を発音するときは周波数スペクトルのピークが近くなる(フォルマント)。

→つまり、人間の声の周波数スペクトルを求めてそのピークを真似てやればよい!



つまりこんなことをやっている!

vocoder.png



ただし今回は...


  • 楽器音の入力は省いて、Oscillatorを使った


  • Oscillatorはカスタム波形を作れる

  • →基本周波数とその整数倍周波数を混ぜる割合(=倍音構成)を指定できる

※ピークが倍音と決めつけている(後述)



今回作ったヴォコーダーの流れ


  1. 声を入力する

  2. 入力された声の倍音構成を求める

  3. その倍音構成を使ってカスタム波形を更新



とりあえずデモを


  • 正直微妙



注意とか


  • Advent Calendar に指摘コメントがありました

  • どうやら整数倍音では再現できないようです

  • このあたり詳しい方いたら教えてください



以上!