Синтезирующий гласный звук из существующего сэмпла Jin Matlab

Я использую Matlab и записал образец гласного звука. Я собираюсь использовать свой существующий семпл для синтеза гласного звука с шагом 150 Гц (продолжительностью 5 секунд). Первоначально я думал, что мне просто нужно взять образец моего существующего гласного звука на заданной частоте, но, очевидно, это на самом деле не работает.

Итак, теперь я довольно озадачен тем, как можно на самом деле синтезировать гласный звук?

1 ответ

Возможный подход:

  1. Возьмите один период образца (определяется визуально). Важно, чтобы он начинался и заканчивался на значении 0 (или очень близко), чтобы избежать появления трещин, вызванных различиями в каждой конечной точке.
  2. Повышение или понижение сигнала, извлеченного на этапе 1, по мере необходимости, чтобы получить желаемый шаг. Повышение частоты дискретизации уменьшает высоту звука, уменьшение частоты дискретизации увеличивает ее. Ты можешь использовать resample функция, например.
  3. Патч много этих периодов один за другим, пока вы не получите желаемую продолжительность 5 секунд. Ты можешь использовать repmat функция для этого.
  4. Умножьте эту 5-секундную форму сигнала элемент за элементом на огибающую времени с желаемой формой. Форма огибающей обычно представляет собой быструю атаку в виде линейного линейного изменения от 0 до 1, затем длинного постоянного значения и затем уменьшения в направлении 0.

Для большей реалистичности вы можете ввести медленные изменения амплитуды в "постоянной" части огибающей (эффект тремоло). Вы также можете извлечь на шаге 1 фрагмент сигнала, содержащий не один, а несколько периодов сигнала. Эти периоды не будут точно такими же, и это добавит "тепло" звуку.

Другие вопросы по тегам