none
サンプリング周波数がズレる RRS feed

  • 質問

  • 初めて投稿いたします。至らない点、失礼な点等ありましたらご指導下さい。

    VC++6.0 で音声入力のアプリケーションを作成していますが、指定した周波数どおりのサンプルとならなくて困っています(8KHzを指定したが、実際は約8.1KHz)。

    VC++フォーラムへの投稿がふさわしいかどうか疑問はあるのですが、どなたか情報を頂けると幸いです。

    <以下詳細>

    パソコンのマイク入力を8000Hz 16bitでサンプリングし、1024Byteたまったら、別装置(自前ハードウェア)にEthernetでUDP送信するというアプリです。音声入力を行なうAPIは、waveInXXXを使用しており、1024Byteのバッファを2面使って、片側バッファフルのタイミングで送信をしています。

    受信側(自前ハードウェア)では、送信側とのクロック誤差を吸収する程度のバッファリングを行ない、再生を行います。あるパソコンでは問題なく動作しますが(実測サンプリング8KHz)、別のパソコンでは、サンプリングが約8.1KHzとなってしまい、受信側のバッファがオーバーする方向となります。これは、クロック誤差とはいえないです。

    5台のパソコンについて確認しましたが、3台が正常(8KHz)、2台が約8.1KHzとなってしまいます。同じような事象を経験された方、情報頂けると幸いです。

    <以下付加情報>

    また、5台のパソコンについて、XPに添付されているサウンドレコーダを使って以下のようになりました。

    ・「長さ」を300秒(長いほうが分かりやすいので)にする。
    ・「位置」を0秒にして録音を開始する。と同時にストップウォッチをスタートする。
    ・サウンドレコーダの「位置」が300秒になったらストップウォッチを止める。
    ・サンプリングレートが8kHzならストップウォッチも300秒ですが8.1kHzだと296秒前後になります。


    以上、宜しくお願いします。

    2006年6月19日 14:52

すべての返信

  • 自己レスで情報を補足いたします。

    ・確認を行った5台のパソコンは、異なる機種です。同機種のパソコンでは同じ結果がでました。

    ・確認を行った5台のパソコンのOSは全てXPです。

    以上です。

     

     

     

     

    2006年6月19日 15:30
  • 私も似た現象を経験しました。
    16kHz 16bitで取得したファイルの音がずれる(たしか実際より速く聴こえる)現象でした。
    「Windowsサウンドプログラミングバイブル」でもちょこっと触れられていましたが、
    本体とサウンドカードのクロックが別々に供給されているせいのようです。
    現象の出たパソコンにM-AudioのMobilePreというオーディオインターフェースをつなげ同条件でテストしたところ現象は出ませんでした。
    他にサンプリング周波数44.1kHz 16bitでテストした場合も現象は出ませんでした。
    単純にサンプリング周波数をいろいろ変えてみると解消されるかもしれません。

    ちなみに富士通のLOOXはこのあたりの現象は出ませんでした。
    ただ、再生と録音でデバイスが分かれている(再生用サウンドカードと録音用サウンドカードが載っているイメージ)変わった仕様のようですが。

    2007年1月20日 16:35