• ベストアンサー

wavの倍速再生(タイムストレッチ)

VC++でwavの倍速再生(タイムストレッチ)を行いたいと思っています。 ロジックを組むには、かなり高度な知識と技術がいるようです…。 そこで、APIの『waveOutSetPlaybackRate』を使ってみようと思いましたが、 デバイスがサポートされていなければいけないようで、実現できませんでした。 『waveOutSetPlaybackRate』の使用できるデバイスをご存知の方、 『waveOutSetPlaybackRate』のわかる方、ご教授をよろしくお願いします。

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

  • ベストアンサー
回答No.2

デバイスは知らないのですが、比較的簡単に再生速度を変える方法に、OLA(Overlap-and-Add)があります。やったことはないですが音質はあまりよくないようです。 その一種であるPICOLAに関する記事です。 http://keizai.yokkaichi-u.ac.jp/~ikeda/research/picola-jp.html

sheep777
質問者

お礼

倍速再生できました!! 今回扱うwavデータが『PCM 8kHz 16ビット モノラル』とあまり音質の良いデータではないため、音質の劣化は気になりませんでした。 本当にありがとうございました。 ※引き続き、『waveOutSetPlaybackRate』についての情報をもう少し待ってみたいと思います。

sheep777
質問者

補足

ご回答ありがとうございます。 サンプルソースもあるようですし、早速、勉強してみようと思います。 『音質はあまりよくない』そうですが、どの程度なんでしょうね。 試行錯誤してみて、後ほど報告したいと思います。

その他の回答 (1)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

メモリー上にwavファイルを展開して凝縮しては? wavファイルのフォーマット自体は単純です。 倍速で再生するには偶数番目のデータを削れる単純な方法で良いかと。 (もちろん音は高くなりますけど) 音を高くしない方法になると、私には分かりません。

参考URL:
http://www.graffiti.jp/pc/p030506a.htm
sheep777
質問者

補足

ご回答ありがとうございます。 お察しの通り、音の高さはそのままに倍速再生を実現させたいのです。 音が高くなってもよければ、単純に順番にデータを削ったり、サンプリングレートを変えたりという方法でよいのですが…。

関連するQ&A

専門家に質問してみよう