Перейти к содержанию
    

SpeexLib для STM и качество звука

Господа, есть такой кодек речевой - Speex, под него есть библиотека для STM32. Кто работал тот знает.

Пример в ней заточен под quality=4, 8 кГц 1 кбит/сек.

Хочется попробовать звук получше - quality 10, 32 кГц, 5 кбит/сек

Что только не делала, дефайны меняла, размеры фреймов пересчитывала - слышно шипение. Такое ощущение что не все переменные исправила.

 

Может кто занимался? Подскажите, как перенастроить?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Звук получше можно сделать переключив кодек в один из режимов wideband и увеличить битрейт, 5кбит/с очень мало.

Кодек Speex в первую очередь предназначен для передачи голоса, и получить качественного звука на нем не получится.

Для воспроизведения звука в хорошем качестве, нужно использовать другой кодек, например Celt.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Звук получше можно сделать переключив кодек в один из режимов wideband и увеличить битрейт, 5кбит/с очень мало.

Кодек Speex в первую очередь предназначен для передачи голоса, и получить качественного звука на нем не получится.

Для воспроизведения звука в хорошем качестве, нужно использовать другой кодек, например Celt.

 

Уважаемый! Мне как раз голос и нужен. Я сгенерировала голос программой Acapela, конвертировала его кодеком ACMSpeex в 32 kHz 5 кбит/сек, quality=10. Отличий от оригинала не услышала.

Понятно, что если бы была музыка, то это была бы ерунда. В общем 5 кбит/сек меня устраивает, есть готовый аудиофайл.

 

Есть также работающий код для STM32, который настроен на 8 кГц и quality=4, битрейт - 1 кбит/сек.

Мой вопрос в том, может ли кто либо, реально этим занимавшийся, привести полный список того, что нужно поменять. Академичные рекомендации типа "ну настройте частоту дискретизации" не помогут. Что сделать в принципе я знаю, не это не помогает, какая-то заковырка в самом коде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам нужны оригинальные исходники Speex, т.к. у порта от STM для других настроек не хватает таблиц этих самых настроек, так мне коллега по цеху рассказывал, поэтому у него было решение перейти на Opus (исходники были взяты с оригинального сайта), настройки гибче и понравилось ему больше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам нужны оригинальные исходники Speex, т.к. у порта от STM для других настроек не хватает таблиц этих самых настроек, так мне коллега по цеху рассказывал, поэтому у него было решение перейти на Opus (исходники были взяты с оригинального сайта), настройки гибче и понравилось ему больше.

Вчитавшись в описание...

По моему эта библиотека от ST рассчитана только на quality=4. Да, там есть дефайны, определяющие длину пакетов, видимо они сделаны для удобства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вчитавшись в описание...

По моему эта библиотека от ST рассчитана только на quality=4. Да, там есть дефайны, определяющие длину пакетов, видимо они сделаны для удобства.

Приложил имеющиеся у меня исходники и проект для KEIL, который собирает библиотеку (библиотека собирается для удобства сборки некоего проекта, чтобы не перекомпилировать тот каждый раз из исходников, когда в проекте что-то меняется).

speex.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приложил имеющиеся у меня исходники и проект для KEIL, который собирает библиотеку (библиотека собирается для удобства сборки некоего проекта, чтобы не перекомпилировать тот каждый раз из исходников, когда в проекте что-то меняется).

 

Ах тыж вот оно что - FRAME_SIZE нужно менять в зависимости от частоты дискретизации, а ENCODED_FRAME_SIZE - в зависимости от сжатия.

Скажите, вы что-то меняли кроме исполняемых файлов и их заголовков? Файлы в папке с библиотекой SPEEX не изменены?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, вы что-то меняли кроме исполняемых файлов и их заголовков? Файлы в папке с библиотекой SPEEX не изменены?

Уже как бы и не помню. Возможно, я подправил в исходниках некоторые ляпы (ну вроде использования беззнаковых для знаковых, и подобное), а в общем и целом ничего не менял.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как уже верно заметили в примерах от ST вырезаны таблицы других режимов из файлов modes.c и modes_wb.c,

которые требуются для декодирования режимов отличных от NB 8kbps.

 

Вот примеры рассчетов длины фреймов для двух режимов:

 

1. режим narrowband (submode 3)

// Sample rate 8kHz

SAMPLE_RATE 8000 Hz

// Encoded bit rate 8kbps

BIT_RATE 1000 Byte/s

// Frame length 20 ms

FRAME_LENGTH 0.02s

 

ENCODED_FRAME_SIZE = BIT_RATE * FRAME_LENGTH = 1000 * 0.02 = 20 байт на один кодированный 20мс фрейм

FRAME_SIZE = SAMPLE_RATE * FRAME_LENGTH = 8000 * 0.02 = 160 семплов по 16 бит на один декодированный 20мс фрейм

 

2. режим ultra-wideband

// Sample rate 32kHz

SAMPLE_RATE 32000 Hz

// Encoded bit rate 32kbps

BIT_RATE 4000 Byte/s

// Frame length 20 ms

FRAME_LENGTH 0.02s

 

ENCODED_FRAME_SIZE = BIT_RATE * FRAME_LENGTH = 4000 * 0.02 = 80 байт на один кодированный 20мс фрейм

FRAME_SIZE = SAMPLE_RATE * FRAME_LENGTH = 32000 * 0.02 = 640 семплов по 16 бит на один декодированный 20мс фрейм

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже как бы и не помню. Возможно, я подправил в исходниках некоторые ляпы (ну вроде использования беззнаковых для знаковых, и подобное), а в общем и целом ничего не менял.

Попробовала запустить хотя бы ваш проект - он у Вас на 24 МГц что ли? По крайней мере из комментариев к настройкам таймера это следует.

Однако при изучении проекта я нашла что файл system_stm32 в проект вообще не добавлен, а в main.c есть функция настройки тактовой чатсоты, которая закомментирована.

Признавайтесь, где вы спрятали настройку тактовой частоты, хочу настроить на 72 МГц.

Кстати в том виде в котором вы выложили, я слышу не речь а чириканье.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по описанию, проект на 100-ой дискавери, там макс. 24МГц, тактирование настраевается из стартап файла и скорее всего взято по дефолту.

смотрите файлы тактирования в CMSIS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовала запустить хотя бы ваш проект - он у Вас на 24 МГц что ли? По крайней мере из комментариев к настройкам таймера это следует.

Дело в том, что проект - не мой вообще. Это так было. Мой "проект" - это target "speex_lib8", создающий библиотеку *.lib, которую я пользую в совершенно ином, внешнем проекте. Там мне нужна только речь на самом низком качестве кодека для экономии пространства на носителе (реально - EEPROM в 256K).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ОК, все получилось. Только разницы между Q4 8kHz и q10 16 kHz не ощущается. может быть сама запись такого качества. Попробую сегодня свой звук залить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Люди подскажите чем Вы готовите звук. Пробую сделать как в статье Воспроизведение звука на STM32-Discovery при помощи Speex. Звук что в примере у меня играет. Поставил кодек SpeexACM_1.0.1.1 пробую из разных конвертеров ауди сделать закодированный файл, никак не получается то что нужно. Если у кого есть, поделитесь кодеком и конвертером на котором у Вас получилось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...