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

Посоветуйте какой-нить аудиокодек

Друзья, с новым годом.

 

Хочется добавить в проект на STM32+QUADSPI возможность воспроизводить звукозаписи. Понравилась микросхема WM8994ECS/R, что есть на плате STM32F746DISCO - но дороговата. Видимо за счет того, что там есть микрофонные входы, SPDIF, усилитель аж до 2 ватт, стерео.

Что мне нужно обязательно (надеюсь, что с этим минимумом цена будет 3-5 долларов):

1. Собственно кодек, чтоб как-то разгрузил контроллер от раскодирования

2. Встроенный усилитель 0.5-1 Ватт.

3. Можно один канал.

4. Разумное количество внешних элементов.

Были мысли про МP3 кодеки из серии VS10xx. Но слышала, что там какие-то заморочки с тем, чта за использование MP3 кому-то что-то платить надо.

 

Посоветуйте. Спасибо.

Изменено пользователем murmur

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


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

1 hour ago, murmur said:

Были мысли про МP3 кодеки из серии VS10xx. Но слышала, что там какие-то заморочки с тем, чта за использование MP3 кому-то что-то платить надо.

Никому теперь ничего платить не надо.  Истёк патент на MP3 и его отдали в свободное плавание...

К тому же в VS1053, 1063 есть свободный OGG Vorbis

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


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

1 hour ago, GenaSPB said:

NAU8822L

да.... на него даже даташит не найти. даже на официальном сайте показывает - файл не найден. А жаль, описание привлекает

 

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


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

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


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

28 minutes ago, murmur said:

да.... на него даже даташит не найти. даже на официальном сайте показывает - файл не найден. А жаль, описание привлекает

 

Чего там привлекает?  Тупо АЦП-ЦАП без аппаратного декода сжатых форматов.  Такого добра полно.  Без I2S и DMA можете про него забыть.

 

Вот вариант чисто ЦАП 1 канал ничего лишнего: UDA1334BTS.  Самый экономичный по энергопотреблению, ниже уже не найдёте.

 

Изменено пользователем repstosw

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


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

Аппаратные кодеками называют комбо ацп+цап+усилитель. Декодированием сжатого аудио они не занимаются, и микроконтроллер не разгрузят.

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


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

4 minutes ago, rkit said:

Аппаратные кодеками называют комбо ацп+цап+усилитель. Декодированием сжатого аудио они не занимаются, и микроконтроллер не разгрузят.

Звучит обнадёживающе...

Всегда считал, что аппаратный кодек - это чип, который жмёт при записи и разжимает при воспроизведении. Пусть даже со своим DSP ядром внутри.

А программный кодек - софт-вариант прошивки в управляющем контроллере, который реализует сжатие-разжатие программно.

Остальное - просто АЦП и ЦАП, но называть их кодеком - всё-равно что называть ракетой жестянку без реактивного двигателя.

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


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

В первом сообщении про мп3 ни слова...

И в устроившем упомянутом WM8994ECS... никаких декодеров не наблюдается... кстати иноересная машинка. Не требуео больших разделителтных конденсатоов. Вообще не требует - встроен инвертор питания. Но 0.5 мм шаг шаров это проблема

Раньше на алиекспрессе были тоже. Теперь исчезли напрочь.

Изменено пользователем GenaSPB

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


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

Хорошо. Рассмотрим вопрос с другой стороны. Мне не нужно проигрывать мелодии, звуки будут короткие 1-3 секунды.

 А контроллер - STM32F7. В нем есть свободный ЦАП выход. Так может есть какая-нибудь библиотека которая распаковывает запакованный звук и выдает его на ЦАП.  Имею опыт работы со SPEEX  - но он ужимает с потерей качества. Отсюда 2 вопроса.

1.Сильно ли загрузит распаковка и воспроизведение звука такой контроллер как STM32F7?

2. Посоветуйте какое-нибудь софтовое решение.

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


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

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

Ну и 12 бит цап в наше время 16ти битного cd качества... будет не звучать. Кстати насчет a-law и аналогов?

Вот вы говорите короткие звуки. Во всяких простых решениях жуткие шумы на фоне (например короткий блям - но перед ним и после него слышно что еще идет воспнризведение). Или синтезировать сразу звуки и эффекты. решений не припомню.

Изменено пользователем GenaSPB

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


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

4 minutes ago, GenaSPB said:

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

Ну и 12 бит цап в наше время 16ти битного cd качества... будет не звучать. Кстати насчет a-law и аналогов?

 

Раньше это успешно делалось на TDA7052 - у нее есть регулировочный вход, на который цеплялся второй выход ЦАП. Вообще, усилитель подобрать проще, чем кодек. Потому и спрашиваю о таком варианте.

 

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


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

TLV320AICxxx - всяких на любой вкус.

PS: если на F7 заморачиваться о загрузке при проигрывании "блям-м-м"? Ну незнаю...

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


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

9 hours ago, murmur said:

Хорошо. Рассмотрим вопрос с другой стороны. Мне не нужно проигрывать мелодии, звуки будут короткие 1-3 секунды.

 А контроллер - STM32F7. В нем есть свободный ЦАП выход. Так может есть какая-нибудь библиотека которая распаковывает запакованный звук и выдает его на ЦАП.  Имею опыт работы со SPEEX  - но он ужимает с потерей качества. Отсюда 2 вопроса.

1.Сильно ли загрузит распаковка и воспроизведение звука такой контроллер как STM32F7?

2. Посоветуйте какое-нибудь софтовое решение.

Практически всё аудио сжимают с потерей качества. Выбор кодека зависит от природы звука. SPEEX ориентирован на голос.

Для stm32 от производителя есть и mp3, и еще куча всяких кодеков. Для голосовых нагрузку обещают меньше 500кГц.

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


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

13 hours ago, GenaSPB said:

В первом сообщении про мп3 ни слова...

Цитата из первого сообщения:

Quote

Были мысли про МP3 кодеки из серии VS10xx. Но слышала, что там какие-то заморочки с тем, чта за использование MP3 кому-то что-то платить надо.

 

11 hours ago, murmur said:

Хорошо. Рассмотрим вопрос с другой стороны. Мне не нужно проигрывать мелодии, звуки будут короткие 1-3 секунды.

 А контроллер - STM32F7. В нем есть свободный ЦАП выход. Так может есть какая-нибудь библиотека которая распаковывает запакованный звук и выдает его на ЦАП.  Имею опыт работы со SPEEX  - но он ужимает с потерей качества. Отсюда 2 вопроса.

1.Сильно ли загрузит распаковка и воспроизведение звука такой контроллер как STM32F7?

2. Посоветуйте какое-нибудь софтовое решение.

2)

Есть несколько вариантов несложного сжатия:

 

1) IMA ADPCM - сжатие 4:1 - из двух 16-битных семплов делает 1 байт. На слух даже звучит неплохо

 

2) 2-битный ADPCM из G.726   (конкретно g726_16) - сжатие 8:1, но уже есть небльшие артефакты в виде легкого шума, но терпимо.

 

3) кодек CELT с высокой скоростью кодирования-декодирования - сжатие 8:1 - 10:1.  Фрейм распаковывается около 0,6 секунд на 450 МГц (длина распакованного фрейма выставляется, битрейт регулируется, полоса частот тоже).  Версия 9 или 10.  Всё что выше - будет притормаживать из-за Опусных нововведений.   Качество не уступает MP3 на тех же битрейтах и более гибкий в настройках (битрейт, размер фреймов, частота дискретизации).

 

4) Архиваторы (типа ZLIB)  или RLE-сжатие не рекомендую использовать для сжатия звука без потерь:  в лучшем случае будет сжатие в 1,5 раза, что ни о чём

 

5) A-law, u-Law - сжатие 2:1, что хуже ADPCM

 

Со всеми пятью лично игрался,  в сборке очень просты - как детские кубики. Достаточно отрассировать штатный MAKE в команды GCC и сделать порт на любую 32-битную архитектуру.

 

1)

Не загрузит практически, если выполнить ряд оптимизаций (в основном это касается кодека CELT в режиме плавающей точке) , для целочисленной реализации ничего оптимизировать не надо.

 

Дуть можно в штатный 12-битовый ЦАП STM32.   12 бит использовались при проигрывании музыки с CD, меломаны терпели :)

 

УНЧ можно взять LM4871 - 1 ватт на 8 Ом будет честно выдавать при питании от 3,3 V.   К тому же мостовой, а значит помех он не боится и минимум обвеса - без цепей Цобеля и больших разделительных конденсаторов.  Подключать сразу с выхода ЦАП STM.

 

Quote

Так может есть какая-нибудь библиотека которая распаковывает запакованный звук и выдает его на ЦАП.

 

Нет таких библиотек (читай: готовых решений под ключ). Все библиотеки работают с буферами источника и приёмника - в первый кладём что пожать, со второго берём пожатое. Или наоборот при декодировании.  Дальше решаем сами что делать с данными.

Изменено пользователем repstosw

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


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

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

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

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

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

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

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

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

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

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