Кодирование паузПример. Для реализации алгоритма обнаружения и кодирования пауз необходимо выполнить следующие действия: 1. Создать и (или) загрузить звуковой файл формата *.wav, содержащий некоторое количество периодов молчания (пауз). 2. Задать начальные параметры: 1) длину анализируемого отрезка N (значение подобрать эмпирически, исходя из предварительного анализа длительности звуков и пауз в речевых сигналах); 2) начальное значение энергетического порога Н, которое должно быть максимальным (т.е. настолько большим, чтобы первый отрезок идентифицировался как пауза, поскольку мы предполагаем, что любой звуковой сигнал начинается с периода молчания). 3. Создать цикл анализа отрезков сигнала. 4. В теле цикла для отрезка анализа: 4.1. вычислять величину энергии сигнала любым способом, например ; 4.2. сравнивать величину энергии с пороговым значением, т.е. проверять условие P < H; 4.3. если условие выполняется, то отрезок сигнала идентифицируется как пауза и следует: а) вычислить усредненное значение энергии Р ср (с учетом значений предыдущих отрезков анализа); б) вычислить значение порога, уточненное по среднему значению энергии Н = К× Р ср (здесь К – коэффициент определенный эмпирически); в) кодировать паузу (для кодирования пауз можно использовать различные способы, например запомнить номер отрезка анализа, или запоминать номер начального отсчета и длину паузы); г) удалить отрезок паузы из исходного вектора; 4.4. если условие не выполняется, то перейти к анализу следующего отрезка. 5. Сохранить сигнал с удаленными паузами и данные кодирования пауз. 6. Определить коэффициент сжатия Ксж = VБП/VИС, (5.1) где VИС – длина (в отсчетах) вектора исходных данных, VБП – длина (в отсчетах) вектора данных с удаленными паузами.
|