- ベストアンサー
wavの倍速再生(タイムストレッチ)
VC++でwavの倍速再生(タイムストレッチ)を行いたいと思っています。 ロジックを組むには、かなり高度な知識と技術がいるようです…。 そこで、APIの『waveOutSetPlaybackRate』を使ってみようと思いましたが、 デバイスがサポートされていなければいけないようで、実現できませんでした。 『waveOutSetPlaybackRate』の使用できるデバイスをご存知の方、 『waveOutSetPlaybackRate』のわかる方、ご教授をよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
デバイスは知らないのですが、比較的簡単に再生速度を変える方法に、OLA(Overlap-and-Add)があります。やったことはないですが音質はあまりよくないようです。 その一種であるPICOLAに関する記事です。 http://keizai.yokkaichi-u.ac.jp/~ikeda/research/picola-jp.html
その他の回答 (1)
- sha-girl
- ベストアンサー率52% (430/816)
回答No.1
メモリー上にwavファイルを展開して凝縮しては? wavファイルのフォーマット自体は単純です。 倍速で再生するには偶数番目のデータを削れる単純な方法で良いかと。 (もちろん音は高くなりますけど) 音を高くしない方法になると、私には分かりません。
質問者
補足
ご回答ありがとうございます。 お察しの通り、音の高さはそのままに倍速再生を実現させたいのです。 音が高くなってもよければ、単純に順番にデータを削ったり、サンプリングレートを変えたりという方法でよいのですが…。
お礼
倍速再生できました!! 今回扱うwavデータが『PCM 8kHz 16ビット モノラル』とあまり音質の良いデータではないため、音質の劣化は気になりませんでした。 本当にありがとうございました。 ※引き続き、『waveOutSetPlaybackRate』についての情報をもう少し待ってみたいと思います。
補足
ご回答ありがとうございます。 サンプルソースもあるようですし、早速、勉強してみようと思います。 『音質はあまりよくない』そうですが、どの程度なんでしょうね。 試行錯誤してみて、後ほど報告したいと思います。