detamamoruのブログ

興味を持ったことや勉強したことに関して記事を書きます。主に低レイヤー寄りの記事を公開。

Voice changerを作りたくて(0): 何から始めたらええねん

出田 守です。 このシリーズは、ほとんど何もわからない状況からVoice changerを作る過程の記録です。

環境(私も含めて)

[私について]
算数・数学: 苦手で避けてきた(後悔中)。おそらく中学2年生で止まっている。
プログラミング: 努力中
[開発環境 - PC0]
OS: Windows10 Home 64bit 1903
CPU: Intel Core i5-3470 @ 3.20GHz
Rust: 1.39.0
RAM: 8.00GB
Editor: Vim 8.1.1 Terminal: PowerShell

voice changerを作りたくなりました

以前ある外国のhackerがある企業の社長になりすまして、情報を盗んだという事件の記事をどこかで見ました。その手口がvoice changerを使って社長の声になりすましたそうです。(どこにその記事があるのか分からなくなりました)
この時、voice changerを作ってみたくなったのです。もちろん犯罪目的ではなく、あくまでも純粋に面白そうだからです。人を笑わせたり、ちょっとしたイタズラに使えそうです(笑)

voice changerってなんや

私はvoice changerの専門家ではないので、まずはvoice changerについて調べます。
wikipediaでは以下のように説明されています。

ボイスチェンジャー (Voice changer) とは、入力された音声を加工して違う音声に聞こえるようにする機械[1]、またはその機能のついた電話機である。変声機や音声変換機とも呼ばれる。機材の他にもパソコンで使えるソフトウェア[2]のボイスチェンジャーも存在する。

Wikipedia - ボイスチェンジャー

入力された音声信号を何かしら加工して出力する機械ですね。

どのように作っていくか

voice changerの実現方法はソフトウェアとハードウェアの2種類あると思っています。
まずは、コストがかからないソフトウェアで作って、雰囲気をつかんでからハードウェアに挑戦します。
ゼロからソフトウェアで作っていくうえで、主な流れを以下に示します。

  1. 音声信号入力
  2. 音声信号をフーリエ変換
  3. 音声信号を解析
  4. 音声信号を加工
  5. 音声信号を逆フーリエ変換
  6. 音声信号出力

いっちょまえにフーリエ変換とか書いていますが、何にも分かっていません。環境の章でも書いた通り数学が苦手です。ですので、フーリエ変換を学ぶために -> 三角関数を学ぶために -> ...という再帰ループが待っていそうです。
まあ、とりあえずこのような感じでやっていきます。