当ブログは移転しました。

C#で音声変換する

最近C#を使ってwavやmp3,aacの変換を行う機会があった.
思ったよりもいろいろ試してみることになったので,メモとして残しておく.

NAudio

C#でオーディオを扱うにあたって,いろんなことができるのがNAudioである. mp3やaacに簡単に変換できるようなメソッドが備わっているので,最初はこれを使う予定だった.

naudio.codeplex.com

ところが,変換機能を使えるかどうかはOSに入っているコーデックに依存するため,Windowsのバージョンによっては動かないものもあることがわかった.

markheath.net

自分が使用している開発環境(Windows7)では使えなかったため断念.ちなみに,常用しているWindows10のマシンでは動いた.

NAudio.Lame

他のライブラリを探してみたところ,NAudio.Lameというものを発見.

NuGet Gallery | NAudio.Lame 1.0.4

外部dllを入れる必要があるが,wavとmp3の相互変換が可能になる. ただし,aacには対応していない.

Expression Encoder

さらに他のライブラリを探していると,Expression Encoderという,Microsoft謹製のライブラリを発見.正確にはエンコードソフトのsdkなのかな?

Overview of the Expression Encoder SDK

www.nuget.org

しかし,変換機能は有料版じゃないと使えないとのこと. 読みづらいドキュメント読んで頑張ったのに,なんということだ…

Media Tool Kit

ffmpegのラッパーを見つけた.インストールにやたら時間がかかるというところを見ると,ffmpegを内包してるっぽい. コードも簡単に書けるし,とりあえずこれを使ってみることにした.

www.nuget.org

パッケージマネージャからインストールしたら,以下のように記述して使える. ファイル名の拡張子を変えてやることで変換先の形式をかえられるようだ.