repstosw 18 January 26 Posted January 26 (edited) · Report post Взял речевой сигнал, посчитал его спектр. Затем свёл спектр в МЕЛ-банки. Затем сделал ДКП (дискретно-косинусное преобразование DCT II). Получил коэффициенты: нулевой коэффициент - энергия фрейма, 1-й коэффициент - гласный/согласный,... Всего 64 ДКП коэффициента на 1 фрейм. Далеее разбиваю вектор (64 мерность) на под-векторы длиной: 1,1,2,4,8,16,32. Затем делаю векторное квантование методом ЛБГ(LBG) в пределах каждого под-вектора. Получаю кодовые книги. При декодировании обратно - получаю спектр сигнала, отличающийся от исходного (что и ожидаемо). Но искажения всё-же великоваты (ИМХО). Пробовал векторно квантовать сразу МЕЛ-спектр (без ДКП ) - также разбивал на под-вектора. Результат оказался лучше. Собственно вопрос: что нужно сделать с коэффициентами ДКП, чтобы они квантовались с меньшей ошибкой? (при сохранении разрядности квантования кодовых книг). Можно ли как-нибудь применить предсказание или декоррелировать смежные вектора? Ведь это временной ряд, вектора сильно похожи на соседние. Edited January 26 by repstosw Quote Share this post Link to post Share on other sites More sharing options...
repstosw 18 January 28 Posted January 28 (edited) · Report post On 1/26/2025 at 2:59 PM, repstosw said: Собственно вопрос: что нужно сделать с коэффициентами ДКП, чтобы они квантовались с меньшей ошибкой? (при сохранении разрядности квантования кодовых книг). Можно ли как-нибудь применить предсказание или декоррелировать смежные вектора? Вопрос решён. Сделал предсказание и квантование вектора ошибки. Дистанция квантованных векторов уменьшилась в 1,5 - 1,8 раз. Ниже звуковое примеры: оригинал (16 бит, 16 кГц), Codec2 (16 бит, 8 кГц) 2400 бит/c и новый MEL-DCT кодек 2400 бит/c. Оригинал: orig.wav Codec2 2400 bps, 8 kHz: Codec2.wav MEL-DCT 2400 bps, 16kHz: MELDCT.wav 16-кГц альтернатива кодеку Codec2 готова! Edited January 28 by repstosw Quote Share this post Link to post Share on other sites More sharing options...
petrov 11 January 28 Posted January 28 · Report post Помнится, вы же хотели 150 бит/с добиться, дискретизация 16 кГц - явно лишнняя информация для голоса. Quote Share this post Link to post Share on other sites More sharing options...
repstosw 18 January 28 Posted January 28 (edited) · Report post 9 hours ago, petrov said: дискретизация 16 кГц - явно лишнняя информация для голоса. Если сторого, то да. Телефонный стандарт: 300 - 3400 Гц. Но: 1) 125 - 250 Гц : голосовая основа (кто говорит) 2) 3400 - 7000 Гц: дифференциация фрикативных звуков (влияет на разборчивость) Ну и плюс чисто субъективно: речь с частотой семплирования 16 кГц воспринимается куда приятнее, чем на семплировании 8 кГц. 9 hours ago, petrov said: Помнится, вы же хотели 150 бит/с добиться Пока добился 300 бит/c за счёт разбиения речи на сегменты (разбиение по резким переходам на МЕЛ-спектрограмме) с последующим их выравниванием по времени(интерполяция) и их квантованием. Для того, чтобы достичь более низкие скорости, нужна изначально хорошая модель параметрического вокодера. Все стандартные вокодеры сделаны на основе LPC/LSF : изначально эта модель не обеспечивает достаточно высокого потенциала разборчивости/натуральности речи, и на более низких битрейтах просто деградирует. Поэтому принял решение использовать другую параметрическую модель - на основе МЕЛ-частотных полос. Пример автоматической сегментации речевого сигнала: иногда сегменты получаются сильно короткими во времени. Приходится объединять смежные. На рисунке ниже - размер сегмента не меньше 4. Что даёт итоговый битрейт - не более 600 бит/c. Edited January 28 by repstosw Quote Share this post Link to post Share on other sites More sharing options...
aBoomest 0 January 29 Posted January 29 · Report post 5 hours ago, repstosw said: 1) 125 - 250 Гц : голосовая основа (кто говорит) 2) 3400 - 7000 Гц: дифференциация фрикативных звуков (влияет на разборчивость) А вот это где-то описано? Quote Share this post Link to post Share on other sites More sharing options...