Передискретизация речевых сигналов на произвольных частотах

Python

Передискретизация речевого сигнала является широко используемым методом обработки речевого сигнала. Многие алгоритмы обработки речевого сигнала поддерживают только одну или две частоты дискретизации. y частота дискретизации. Передискретизация делится на повышающую и понижающую. Принцип реализуется интерполяцией. Обычно используемые методы интерполяции включают прямую интерполяцию, лагранжеву интерполяцию и синусоидальную интерполяцию, которые будут представлены отдельно ниже.

1. Direction Interpolation

Основная идея прямой интерполяции заключается в аппроксимации интерполируемых точек с помощью линии, проходящей через две фиксированные точки. Мы предполагаем, что длина исходной речи x равна N, частота дискретизации равна L, длина речи после повторной дискретизации y равна K, а частота дискретизации равна M. Тогда для каждой точки k в y можно найти соответствующую точку nk в x, т.е.

где L/M называется масштабным коэффициентом, а затем мы берем точку n, смежную с nk,

придать им разный вес

Наконец, возьмите их взвешенную сумму как значение y[k] в это время, то есть

Таким образом, интерполяция завершается, и описанная выше операция выполняется для каждого момента y, и весь процесс передискретизации завершается.

2. Lagrange Interpolation

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

Где w — длина окна, то можно знать, что порядок полинома Лагранжа равен 2w+1, то есть для вычисления этой точки интерполяции используется 2w+1 точка дискретизации исходных данных. Для формулы (5) если только коэффициенты перед x[n-i]

Можно найти, что при стремлении w к бесконечности

Это синусоидальная интерполяция, которую мы рассмотрим позже.

3. Sine Interpolation

Было много предвестников синусоидальной интерполяции, и здесь непосредственно приводится расчетная формула интерполяции.

После повторной выборки лучше всего использовать фильтр нижних частот для фильтрации избыточных частотных составляющих, особенно в случае понижения частоты дискретизации.

4. Повторная выборка результатов

Образец выбирается случайным образом из TIMIT, частота дискретизации составляет 16 кГц, и он передискретизируется до 8 кГц и 32 кГц ниже. Сначала посмотрите на временные затраты трех методов.Можно обнаружить, что временные затраты лагранжевой интерполяции являются самыми большими, за ними следует синусоидальная интерполяция, а время прямой интерполяции является наименьшим.

Наконец, посмотрите на спектрограмму: спектрограмма resample_test.wav

upsample_Direct.wav Спектрограмма

downsample_Direct.wav Спектрограмма

Данные и код Python, относящиеся к этой статье, можно получить, нажав ->Дополнительно ->Код->Речевые алгоритмы->Пересэмплировать в строке меню официального аккаунта Группы речевых алгоритмов.

использованная литература:

[1]. Speech signal resampling by arbitrary rate

[2]. wenku.baidu.com/view/b7