2010-12-09 3 views
3

Я пытаюсь найти библиотеку или образец кода или что-то в правильном направлении, которое могло бы помочь мне изменить скорость звука, сохраняя при этом нормальный шаг. Мне нужна эта функциональность в приложении с открытым исходным кодом, поэтому желательно, чтобы библиотека была открытым исходным кодом. Любые идеи, которые помогут мне на правильном пути?Аудио без изменения высоты тона

+0

Вам нужно указать, о каком исходном материале вы говорите - например. обычно вы используете разные алгоритмы для речи и музыки. – 2010-12-09 22:26:03

+0

@Paul, он должен работать с обоими, но если вы говорите, что это разные алгоритмы, скажите, пожалуйста, какие алгоритмы используются для обоих. – silow 2010-12-09 22:51:23

ответ

2

Если вам нужно передать сигнал в домене аудио, играя вовремя, но не в поле: Вы должны знать, из чего состоит ваш сигнал. Чтобы синтезировать хорошую частоту, когда она стоит.

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

2/у вас есть исходный звук, который нужно контролировать Вы должны разложить его в элементах, которые вы можете контролировать, чтобы выполнить ваши гармонические ограничения, во времени и ритмических ограничениях: 3 решения.

a. FFT, быстрое преобразование четырьмя, дающее вам мощность на всех гармониках вашего исходного звука, и до вас, чтобы увеличить временную шкалу некоторых гармоник или другой (действительно готовить рецепты, но действительно стоит эксперемента)

b , Wavelet, близкий к FFT, но сфокусированный на гармонических деталях всякий раз, когда они происходят, и насколько они точны. (представьте себе, как FFT оптимизируется на некоторых значащих частотах в каждый момент времени)

c.Granular Synthesis, я думаю, что это самое простое: это окна с перфорациями (применяя какой-то закон Гаусса-Норма к каждому фрагменту звука), подобно облакам окон над вашим оригинальным звуком, развязывая его во многих частях, полностью управляемых на своих шаг и продолжительность (скорость и период окна, примененного к звуку)

Возможно, может быть много других техник, но я не знаю.

1

Основная идея состоит в том, что вам необходимо преобразовать сигнал вдоль оси времени в сигнал с осями времени и частоты. Затем вы соответствующим образом изменяете этот сигнал, а затем конвертируете обратно.

Оконечные быстрые преобразования Фурье представляют собой общий подход - взять короткий сегмент сигнала, преобразовать в частотную область, повторить для периодических шагов через сигнал. Изменение сигнала в основном означает повторное масштабирование частоты и/или временной оси перед применением обратных преобразований. Окна, вероятно, немного перекрываются, поэтому вы можете смешать (перекрестно затухать) с одного блока на другой.

Другим возможным подходом является использование вейвлет-преобразований, банков фильтров или какого-либо другого близкородственного подхода с несколькими разрешениями. В основе их лежит использование интегральных преобразований, в которых каждая частота обрабатывается в соответствующем масштабе (относительно длины волны). Например, базлет мулета очень похож на вариацию комбинации синус + j.cosine с одной длиной волны, которая является основой преобразования Фурье.

Теоретически это должно обеспечить лучший результат. Поскольку у преобразований, естественно, есть оси времени и частоты, нет необходимости генерировать ось времени «искусственно» путем оконной обработки. Это может избежать иногда очевидных проблем с кроссфейдом между блоками с помощью оконного преобразования Фурье. Я собираюсь предположить, что вместо этого могут быть другие артефакты, но я недостаточно знаю, что они знают.

Извините, если моя терминология вводит в заблуждение или неправильно в отношении материалов с несколькими разрешениями - я очень далек от того, чтобы быть экспертом.

Смежные вопросы