Возможный подход:
- Возьмем один период выборки (идентифицированной визуально). Важно, чтобы он начинался и заканчивался на значении 0 (или очень близко), чтобы избежать трещин, вызванных дискретностью на каждой конечной точке.
- Ускорьте или уменьшите форму волны, извлеченную в шаге 1, по мере необходимости, чтобы получить желаемый шаг. Повышение частоты дискретизации уменьшает шаг, понижающая дискретизация увеличивает его. Например, вы можете использовать функцию
resample
.
- Патч много тех периодов один за другим, пока не получите желаемую продолжительность 5 секунд. Для этого вы можете использовать функцию
repmat
.
- Умножьте эту 5-секундную осциллограмму по элементам на временной огибающей с желаемой формой. Форма огибающей обычно представляет собой быструю атаку в виде линейного наклона от 0 до 1, затем длинное постоянное значение и затем уменьшающуюся рампу в направлении 0.
Для повышения реалистичности вы можете ввести медленные амплитудные изменения в «постоянная» часть оболочки (эффект тремоло). Вы также можете извлечь на шаге 1 часть сигнала, содержащую не один, а несколько периодов формы волны. Эти периоды не будут точно такими же, и это добавит «тепло» к звуку.
Итак, у вас есть образец гласного на известном поле и просто хотите изменить высоту тона? –
@ LuisMendo: Не совсем, я ищу, чтобы создать синтетическую гласную из спектральной оболочки моего существующего образца. (Конечным намерением является создание простой мелодии) –