murmur 0 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Господа, есть такой кодек речевой - Speex, под него есть библиотека для STM32. Кто работал тот знает. Пример в ней заточен под quality=4, 8 кГц 1 кбит/сек. Хочется попробовать звук получше - quality 10, 32 кГц, 5 кбит/сек Что только не делала, дефайны меняла, размеры фреймов пересчитывала - слышно шипение. Такое ощущение что не все переменные исправила. Может кто занимался? Подскажите, как перенастроить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
deni 6 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Звук получше можно сделать переключив кодек в один из режимов wideband и увеличить битрейт, 5кбит/с очень мало. Кодек Speex в первую очередь предназначен для передачи голоса, и получить качественного звука на нем не получится. Для воспроизведения звука в хорошем качестве, нужно использовать другой кодек, например Celt. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Звук получше можно сделать переключив кодек в один из режимов wideband и увеличить битрейт, 5кбит/с очень мало. Кодек Speex в первую очередь предназначен для передачи голоса, и получить качественного звука на нем не получится. Для воспроизведения звука в хорошем качестве, нужно использовать другой кодек, например Celt. Уважаемый! Мне как раз голос и нужен. Я сгенерировала голос программой Acapela, конвертировала его кодеком ACMSpeex в 32 kHz 5 кбит/сек, quality=10. Отличий от оригинала не услышала. Понятно, что если бы была музыка, то это была бы ерунда. В общем 5 кбит/сек меня устраивает, есть готовый аудиофайл. Есть также работающий код для STM32, который настроен на 8 кГц и quality=4, битрейт - 1 кбит/сек. Мой вопрос в том, может ли кто либо, реально этим занимавшийся, привести полный список того, что нужно поменять. Академичные рекомендации типа "ну настройте частоту дискретизации" не помогут. Что сделать в принципе я знаю, не это не помогает, какая-то заковырка в самом коде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Вам нужны оригинальные исходники Speex, т.к. у порта от STM для других настроек не хватает таблиц этих самых настроек, так мне коллега по цеху рассказывал, поэтому у него было решение перейти на Opus (исходники были взяты с оригинального сайта), настройки гибче и понравилось ему больше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Вам нужны оригинальные исходники Speex, т.к. у порта от STM для других настроек не хватает таблиц этих самых настроек, так мне коллега по цеху рассказывал, поэтому у него было решение перейти на Opus (исходники были взяты с оригинального сайта), настройки гибче и понравилось ему больше. Вчитавшись в описание... По моему эта библиотека от ST рассчитана только на quality=4. Да, там есть дефайны, определяющие длину пакетов, видимо они сделаны для удобства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Вчитавшись в описание... По моему эта библиотека от ST рассчитана только на quality=4. Да, там есть дефайны, определяющие длину пакетов, видимо они сделаны для удобства. Приложил имеющиеся у меня исходники и проект для KEIL, который собирает библиотеку (библиотека собирается для удобства сборки некоего проекта, чтобы не перекомпилировать тот каждый раз из исходников, когда в проекте что-то меняется). speex.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Приложил имеющиеся у меня исходники и проект для KEIL, который собирает библиотеку (библиотека собирается для удобства сборки некоего проекта, чтобы не перекомпилировать тот каждый раз из исходников, когда в проекте что-то меняется). Ах тыж вот оно что - FRAME_SIZE нужно менять в зависимости от частоты дискретизации, а ENCODED_FRAME_SIZE - в зависимости от сжатия. Скажите, вы что-то меняли кроме исполняемых файлов и их заголовков? Файлы в папке с библиотекой SPEEX не изменены? Просто ваш проект я запускать не буду, я хочу свой, уже готовый переделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Скажите, вы что-то меняли кроме исполняемых файлов и их заголовков? Файлы в папке с библиотекой SPEEX не изменены? Уже как бы и не помню. Возможно, я подправил в исходниках некоторые ляпы (ну вроде использования беззнаковых для знаковых, и подобное), а в общем и целом ничего не менял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
deni 6 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Как уже верно заметили в примерах от 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мс фрейм Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба Уже как бы и не помню. Возможно, я подправил в исходниках некоторые ляпы (ну вроде использования беззнаковых для знаковых, и подобное), а в общем и целом ничего не менял. Попробовала запустить хотя бы ваш проект - он у Вас на 24 МГц что ли? По крайней мере из комментариев к настройкам таймера это следует. Однако при изучении проекта я нашла что файл system_stm32 в проект вообще не добавлен, а в main.c есть функция настройки тактовой чатсоты, которая закомментирована. Признавайтесь, где вы спрятали настройку тактовой частоты, хочу настроить на 72 МГц. Кстати в том виде в котором вы выложили, я слышу не речь а чириканье. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба Судя по описанию, проект на 100-ой дискавери, там макс. 24МГц, тактирование настраевается из стартап файла и скорее всего взято по дефолту. смотрите файлы тактирования в CMSIS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KnightIgor 2 23 марта, 2016 Опубликовано 23 марта, 2016 · Жалоба Попробовала запустить хотя бы ваш проект - он у Вас на 24 МГц что ли? По крайней мере из комментариев к настройкам таймера это следует. Дело в том, что проект - не мой вообще. Это так было. Мой "проект" - это target "speex_lib8", создающий библиотеку *.lib, которую я пользую в совершенно ином, внешнем проекте. Там мне нужна только речь на самом низком качестве кодека для экономии пространства на носителе (реально - EEPROM в 256K). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
murmur 0 24 марта, 2016 Опубликовано 24 марта, 2016 · Жалоба ОК, все получилось. Только разницы между Q4 8kHz и q10 16 kHz не ощущается. может быть сама запись такого качества. Попробую сегодня свой звук залить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maxntf 0 19 апреля, 2016 Опубликовано 19 апреля, 2016 · Жалоба Люди подскажите чем Вы готовите звук. Пробую сделать как в статье Воспроизведение звука на STM32-Discovery при помощи Speex. Звук что в примере у меня играет. Поставил кодек SpeexACM_1.0.1.1 пробую из разных конвертеров ауди сделать закодированный файл, никак не получается то что нужно. Если у кого есть, поделитесь кодеком и конвертером на котором у Вас получилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться