Как уменьшить скорость воспроизведения данных PCM? - PullRequest
2 голосов
/ 04 ноября 2011

Народ,

В моем приложении для Android я записываю аудио и воспроизводлю его.Пользователь обычно певец.

Теперь мне нужна возможность воспроизводить звук с пониженной скоростью.

Как я понимаю, данные PCM представляют собой просто смесь синусоидальных волн на разных частотах.Существует одна доминирующая волна (наибольшая величина), которая приводит к музыкальным нотам песни.

Чтобы уменьшить скорость в 2 раза, сначала я подумал, что просто дублирую каждый семпл.Например, если выбранные входные значения PCM 20000, 25000, 30000, ..., я воспроизведу 20000, 20000, 25000, 25000, 30000, 30000. Однако это, кажется, не правильное решение.Все, что я здесь делаю, это увеличение длины волны (а значит и частоты) синусоидальных волн.Думаю, это приведет к изменению голоса / нот.

Может кто-нибудь подсказать, как уменьшить или увеличить скорость?

Заранее благодарю за помощь.

С уважением, Петр

1 Ответ

0 голосов
/ 04 ноября 2011

Если под скоростью вы подразумеваете изменение голоса в данных PCM от медленного (высокий гигант) к быстрому (бурундук), тогда

Возможно, вы захотите взглянуть на этот алгоритм для изменения высоты тона. . Идея состоит в том, чтобы получить правильную частоту дискретизации в соответствии с желаемой высотой звука.

...