• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オーディオサンプルレートの変更)

オーディオサンプルレートの変更方法

このQ&Aのポイント
  • Windows XPの環境でWAVファイルのサンプルレートを変更する方法について教えてください。
  • 現在は16bit, 22kHzのWAVファイルを16bit, 8kHzに変換する処理を行っていますが、サンプルレートの変更が行えません。
  • mciSendStringを使用して音声ファイルを再生させる手順は分かりますが、サンプルレートを変更する方法がわかりません。もっと複雑な処理が必要なのでしょうか。別の方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

>このような単純なことではなく、もっと複雑な処理を検討しないと >ならないものでしょうか。 ビットレート変換を行うには「再サンプリング」が必要です。 単純に行う場合は「22050:8000」つまり「22050個のデータから等間隔に8000個を取り出す」と言う「間引き」で行うしかありませんが、音質が著しく劣化し、しかも、音が激しく歪みます。 音質を下げずに変換する場合は、22050個のデータの隙間を補完し、22050と8000の公倍数である1764000個のデータに変換し、1764000個のデータから等間隔に8000個を取り出す、と言う事をしなければなりません。 これではデータが増えて大変な事になるので、普通は、3次スプライン変換やフーリエ変換などで「波形を予測して、特定の位置の波形データを補完する」などの方法を取ります。 >別な方法にてできるものがありましたら、教えてください。 http://www.vector.co.jp/soft/x68/art/se031966.html などのフリーソフトを使用して下さい。 蛇足ですが。 >現在WAVファイル(16bit,22KHz) 通常、WAVファイルで「22KHz」と言うと「22.05KHz」の事です。 なぜかと言うと、これは「音楽CDの44.1KHzの半分」だからです。 このように「半分」の場合は「2個のデータを1つおきに間引くだけ」で簡単に変換出来てしまうので「半分」「1/4」などにするのです。 因みに 44.1KHz=44100Hz 22KHz=22050Hz 11KHz=11025Hz 5.5KHz=5512Hz(0.5Hzの誤差が出るので余り使われない) です。

masato01
質問者

お礼

chie65536様 早速の回答ありがとうございました。 いろいろと勉強しなければいけないことがあり参考になりました。 フリーのツールを使用すれば、変換できることはHPを検索している中で わかってはいましたが、なんとかVBのソース上で実現できる方法がないかと 探しておりました。 また、何か情報がありましたら書き込みをお願いいたします。