ボイスチェンジャーのAndroidアプリ制作は難しい

2018年11月22日

イコライザのAPIが標準で備わっている。簡単に作れそうじゃん。
そう思っていた時期がありました。

リファレンスを読むと…

Equalizerを特定のAudioTrackまたはMediaPlayerに接続するには、Equalizerを構築するときにこのAudioTrackまたはMediaPlayerのオーディオセッションIDを指定します。

そもそもイコライザは再生出力のインタフェースしかないよ、と。

したがって録音するときに使うMediaRecorderAudioRecordにはイコライザが使えない。

じゃあ、どうすれば・・・
ググってみると同じように悩んでる方がいました。

How do you attach a reverb effect to AudioRecord/PCM data and save it to a file?

AudioRecordを使って入力を録音できましたが、AudioTrackにリバーブエフェクトを追加してリバーブエフェクトを聞くことはできますが、リバーブエフェクトを埋め込んだオーディオを保存する方法はわかりません。



ベストアンサーの回答を見ると

このSDKを使用することをお勧めします。
https://github.com/superpoweredSDK/Low-Latency-Android-Audio-iOS-Audio-Engine

次の効果をサポートしています:
エコー、フランジャー、ゲート、リバーブ、ロール、フーッシュ、3バンドイコライザー、バイカッドIIRフィルター(ローパス、ハイパス、バンドパス、ハイシェルフ、ローシェルフ、パラメトリック、ノッチ)

結論

Android標準のクラスでは実装できません。

高速フーリエ変換のライブラリは、いくつか公開されているんですが。
SPTKのようにピッチやメルケプストラムのパラメータを簡単に調整できるライブラリ、無いかなぁ。