Skip to content

Instantly share code, notes, and snippets.

@hirosof
Last active December 12, 2025 16:03
Show Gist options
  • Select an option

  • Save hirosof/9c622340ee170ff541bb70f3d9a3f4f7 to your computer and use it in GitHub Desktop.

Select an option

Save hirosof/9c622340ee170ff541bb70f3d9a3f4f7 to your computer and use it in GitHub Desktop.

PCM音源の速度変更アルゴリズムに関するやり取りまとめ

  • アシスタントは『Microsoft365 Copilot』になります
  • 以下は、アシスタントにまとめてもらったものをそのまま記載しております

1. ユーザーの質問

PCM音源を音程を保持したまま速度を変更するアルゴリズムはどのようなものがありますか?
以下の条件で実装を検討しております。実装難易度が低い順に紹介をお願いします。

* マルチプラットフォーム対応は検討せず、ターゲットのOSはWindows (x86/x64)のみ
* 言語:C++
* Githubなどで入手できるサードパーティ製のライブラリは利用しない
* IDE : Visual Studio 2026
* アプリケーション種別:まずはCUIで実装
* Win32 API:利用可
* OpenMP:利用する
* COM:利用可
* ATL:利用可

2. アシスタントの回答(アルゴリズム紹介)

  • OLA (Overlap-Add)

    • 実装難易度:★☆☆☆☆
    • 特徴:最も簡単、品質は低め、大きな速度変更で劣化。
  • WSOLA (Waveform Similarity Overlap-Add)

    • 実装難易度:★★☆☆☆
    • 特徴:OLAより音質改善、類似度計算が必要。
  • Phase Vocoder

    • 実装難易度:★★★★☆
    • 特徴:高品質、FFT/IFFT必須、計算負荷大。
  • PSOLA (Pitch-Synchronous Overlap-Add)

    • 実装難易度:★★★★★
    • 特徴:音声特化、自然さ抜群、ピッチ検出が難しい。

実装順の推奨

  1. OLA → 最初のプロトタイプに最適。
  2. WSOLA → 音質改善版。
  3. Phase Vocoder → 高品質を目指す場合。
  4. PSOLA → 音声合成やTTS向け。

3. ユーザーの追加質問

各アルゴリズムの比較をお願いします。

4. アシスタントの回答(比較表)

項目 OLA WSOLA Phase Vocoder PSOLA
実装難易度 ★☆☆☆☆ ★★☆☆☆ ★★★★☆ ★★★★★
音質 非常に高
処理速度 高速
メモリ使用量
並列化適性 非常に容易 容易 FFT単位で可能 ピッチ検出は難しい
適用対象 音声・音楽 音声・音楽 音楽・高品質音声 音声特化
音程保持精度 良好 良好 非常に良好 非常に良好
アーティファクト フェージング 軽減 位相補間次第 ほぼなし

5. 次の提案

  • OLAのC++実装サンプルを提示可能。
  • WSOLAの詳細解説も可能。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment