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

Аудиопримеры SDK

Аудиопримеры SiFli-SDK — это практическая основа для проверки полного сигнального тракта, а не готовая прошивка изделия. Выберите пример, который уже подтверждает самую сложную часть вашей разработки: захват с микрофона, вывод на динамик, работу с накопителем или кодеком либо одновременное воспроизведение нескольких потоков. Сначала запустите неизменённый пример на целевой плате, а затем меняйте по одному компоненту за раз.

На этой странице избранные аудиопримеры SiFli-SDK сгруппированы по инженерным задачам. Официальный указатель аудиопримеров служит отправной точкой. В таблице указаны платы, прямо перечисленные на официальных страницах SiFli на момент проверки; название серии не означает поддержку всех её плат и всех версий SDK. Перед сборкой сверяйтесь со страницей для используемой версии и конфигурацией целевой платы.

Выберите подходящий пример

Таблица: аудиопримеры SiFli-SDK по инженерным задачам
Инженерная задача С чего начать Что проверяет пример Официально указанные платы и ограничения
Захват с двух или четырёх цифровых микрофонов Пример PDM Захват PDM; запись WAV и воспроизведение в поддерживающих их режимах обработки На текущей странице указана только sf32lb56-lcd_a128r12n1. Проверьте подключение PDM и мультиплексирование выводов. В описании конфигурации выводов название платы ошибочно указано как f32lb56-lcd_a128r12n1 (пропущена начальная s). В команде сборки указано правильное название.
Захват с двух аналоговых микрофонов Пример локального воспроизведения музыки через стереодинамики (Local Music Example for stereo speaker, два ADC/DAC) Одновременный захват в отдельные PCM-файлы; выбор одного микрофона для мониторинга через динамик Требуется плата SF32LB58x собственной разработки; пример не работает на модульных платах SiFli. Нужны два аналоговых микрофона и два аналоговых динамика.
Проверка базового тракта «микрофон — динамик» Пример записи Запись с микрофона в течение пяти секунд в буфер PCM в памяти с последующим автоматическим воспроизведением eh-lb525 и серии sf32lb52-lcd, sf32lb56-lcd или sf32lb58-lcd; требуется динамик.
Воспроизведение подготовленного аудиофайла из корневой файловой системы Пример локальной музыки Воспроизведение подготовленного 16k.wav из смонтированного корневого раздела FAT; MP3 также можно использовать, если он помещается в настроенную ёмкость eh-lb525 и серии sf32lb52-lcd, sf32lb56-lcd или sf32lb58-lcd; требуются корневой раздел FAT и динамик.
Воспроизведение музыки с SD-карты Локальный MP3-проигрыватель Воспроизведение MP3 или WAV из каталога music на SD-карте и управление громкостью через shell На текущей странице указана только sf32lb52-lchspi-ulp. Нужны SPI1, FAT/MSD и динамик; для определения длительных нажатий также требуется внешняя батарея.
Запись, сжатие, декодирование и воспроизведение аудио без потерь Пример FLAC Запись PCM, кодирование FLAC, декодирование и воспроизведение Серии sf32lb52-lcd, sf32lb56-lcd и sf32lb58-lcd; нужны FAT, libFLAC и аудиокомпоненты.
Запись, сжатие, декодирование и воспроизведение речевого аудио Пример Opus Захват с микрофона на частоте 16 kHz, кодирование/декодирование Opus и воспроизведение На текущей странице указана только eh-lb525. Нужны FAT и аудиокомпоненты; используйте рекомендации по стеку именно для этого примера, приведённые ниже.
Микширование нескольких локальных дорожек Трёхканальный аудиопроигрыватель-микшер (официальная страница на китайском) Независимое декодирование трёх локальных файлов, при необходимости — преобразование частоты дискретизации и микширование На текущей странице как проверенные указаны sf32lb52-lcd_n16r8 и sf32lb56-lcd_n16r12n1; используйте файловый образ и файлы, указанные в примере.

Общая отправная точка

Большинство примеров опираются на общие условия: на плате должно быть установлено и правильно подключено аудиооборудование, конфигурация платы должна включать нужные аудиоблоки, а выбранный пример должен поддерживать целевую плату. Примерам, которые читают или записывают файлы, также нужна смонтированная файловая система. Не переносите название платы, назначение выводов или настройку menuconfig из другого примера, не сверившись с официальной страницей SiFli и файлами конфигурации целевой платы.

Сохраняйте существующие данные файловой системы

Пример Opus из v2.5.1 вызывает dfs_mkfs(), если не удаётся смонтировать корневую файловую систему (исходный код). Не переносите такое автоматическое форматирование в изделие без явной политики сохранения данных. Ошибка монтирования не даёт права стирать пользовательские данные.

Для всех примеров начальную проверку следует намеренно ограничить:

  1. Соберите и прошейте неизменённый проект для поддерживаемой платы.
  2. Проверьте ожидаемое поведение записи или воспроизведения с заведомо исправным аудиооборудованием и файлами.
  3. Зафиксируйте ревизию SDK, название платы, конфигурацию, назначение выводов и журнал последовательного порта.
  4. Измените один элемент для изделия и повторите ту же проверку.

В обзоре аудио объясняется выбор интерфейса и системная архитектура этих примеров. Управление буферами, завершение сеанса и совместная работа с дисплеем или Bluetooth рассмотрены в статье Audio Server и буферизация.

Захват с цифровых микрофонов: PDM

Используйте пример PDM, когда изделию нужен захват звука с цифрового микрофона, а не аналоговый микрофонный вход. Официальный пример поддерживает два или четыре PDM-микрофона, но создание файла записи и воспроизведение зависят от выбранного режима обработки. В описанной топологии для двух микрофонов используются левый и правый каналы PDM1, а для подключения четырёх добавляется PDM2. Один PDM-интерфейс может обслуживать до двух цифровых микрофонов, поэтому количество интерфейсов не равно количеству микрофонов. Проверяйте поддерживаемую конфигурацию по карте интерфейсов и каналов целевой SoC.

На текущей официальной странице в качестве поддерживаемой указана плата sf32lb56-lcd_a128r12n1. Режим pdm open pdm12 4 raw выводит только сообщения в журнал, не создавая файл записи. Режимы обработки Anyka формируют монофонический выход, в том числе при четырёх микрофонах: четыре входа не означают четырёхканальный выходной файл. Перед использованием для микрофонного массива проверьте зависимости алгоритма и формат выхода.

Перед адаптацией примера проверьте четыре условия:

  • Выбранная микросхема и плата предоставляют нужные сигналы PDM.
  • Тактовые сигналы, линии данных, питание и заземление микрофона соответствуют его даташиту.
  • Конфигурация мультиплексирования платы назначает функции PDM до запуска драйвера.
  • Изделию нужны включённые в пример службы записи и воспроизведения; для одного лишь захвата PDM они не обязательны.

На официальной странице примера PDM описаны конфигурация поддерживаемой платы и пример назначения выводов. Используйте их как проверенную отправную точку, но замените назначение выводов фактической разводкой целевой платы, а не предполагайте, что конфигурацию можно перенести без изменений. См. пример PDM.

Аналоговый захват и базовая запись/воспроизведение

Пример записи позволяет быстро проверить захват с микрофона с последующим локальным воспроизведением: он записывает звук в течение пяти секунд в буфер PCM в памяти, а затем автоматически воспроизводит его через динамик. Официальная страница перечисляет eh-lb525 и серии sf32lb52-lcd, sf32lb56-lcd и sf32lb58-lcd. Это полезная отправная точка до добавления файловой системы, сжатия, передачи через Bluetooth или нескольких микрофонов.

Local Music Example for stereo speaker (пример с двумя ADC/DAC) — специализированная основа для платы SF32LB58x собственной разработки. Согласно официальной странице, пример не работает на модульных платах SiFli; для него требуются два аналоговых микрофона и два аналоговых динамика. Команда mic2file одновременно записывает оба микрофона в отдельные PCM-файлы; mic2speaker 0 или mic2speaker 1 выбирает микрофон для прослушивания через динамик. Используйте этот пример, только если такая аналоговая конфигурация соответствует изделию; в противном случае начните с более простого примера записи.

Для обоих вариантов до проверки функций ПО оцените уровень шума в паузах, усиление, ограничение сигнала по амплитуде и поведение при запуске/остановке. Стабильный тракт записи и воспроизведения PCM — основа для работы с кодеками, файлами и Bluetooth.

Локальное воспроизведение и накопители

Пример локальной музыки — простейшая основа для воспроизведения файлов. Официальная страница перечисляет eh-lb525 и серии sf32lb52-lcd, sf32lb56-lcd и sf32lb58-lcd. Пример монтирует корневой раздел FAT и воспроизводит подготовленный файл 16k.wav. Файл MP3 также можно добавить в каталог disk/, если он помещается в настроенную ёмкость файловой системы. Пример подходит для звуков уведомлений, встроенных голосовых подсказок и ранней проверки локального тракта динамика.

Локальный MP3-проигрыватель добавляет съёмный накопитель: воспроизводит MP3 или WAV из каталога music на SD-карте и позволяет регулировать громкость через shell. Оба примера локального воспроизведения требуют файловую систему; этот дополнительно использует SPI1 и драйвер SPI MSD. На документированной плате sf32lb52-lchspi-ulp подключите аккумулятор, чтобы плата распознавала длительные нажатия кнопок. Выбирайте этот пример, если изделие использует SD-карту.

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

Тракт кодеков FLAC и Opus

Пример FLAC проверяет полный тракт аудио без потерь: запись PCM с микрофона, кодирование в FLAC, декодирование и воспроизведение. Официальная страница перечисляет серии sf32lb52-lcd, sf32lb56-lcd и sf32lb58-lcd; требуются FAT, libFLAC и аудиокомпоненты. Он подходит для проверки записи с сохранением в файл или сравнения затрат на хранение с несжатым PCM.

Пример Opus проверяет сжатый тракт для речевых приложений. На текущей официальной странице указана только eh-lb525. В примере захват выполняется на частоте 16 kHz, обработка — кадрами по 10 ms примерно при 16 kbps, после чего поток декодируется и воспроизводится. В документации также указано требование к размеру стека, которое зависит от выбранного режима кодировщика. Сохраняйте это ограничение при использовании примера как основы; не считайте, что размера стека задачи по умолчанию хватит после добавления логики приложения.

В официальном README SiFli-SDK приведены настройки стека для этого примера: OPUS_STACK_SIZE следует установить в 20k, если в opus_test() вызывается opus_encoder_ctl(encoder, OPUS_SET_FORCE_MODE(MODE_SILK_ONLY)); без принудительного включения этого режима рекомендуется 200k. Это рекомендации для примера, а не универсальные требования Opus. Перед их применением проверьте ревизию SDK и используемый путь кодирования, затем измерьте максимальное потребление стека под нагрузкой продукта и подберите размер стека задачи.

Ни один из этих примеров не реализует полный Bluetooth-вызов или потоковое изделие. Сначала проверьте локальное кодирование и декодирование, затем интегрируйте транспорт, буферизацию и политику сеансов с измеренными запасами по задержке и памяти.

Трёхканальное микширование

На текущей официальной странице трёхканального аудиопроигрывателя-микшера как проверенные перечислены sf32lb52-lcd_n16r8 и sf32lb56-lcd_n16r12n1. Пример читает три локальных аудиофайла, декодирует каждый поток, при необходимости преобразует частоту дискретизации входных данных, отличную от 48 kHz, смешивает монофонические потоки PCM и воспроизводит результат. В наборе примеров указаны два MP3 и один WAV. Используйте заданные в примере образ файловой системы и имена файлов, не предполагая, что в образе есть произвольные аудиофайлы.

Проверенный микшер суммирует три монофонических отсчёта и делит результат на три, а не складывает их с полным усилением. Документированный запуск длится около 50 секунд. Отделяйте эту политику усиления и ограниченное время демонстрации от требований изделия к микшированию.

Этот пример подходит для одновременного воспроизведения голосовых подсказок, звуковых эффектов и музыки, когда изделию нужно определять, какие звуки могут накладываться друг на друга. Это не готовая политика работы с аудио: отдельно задайте приоритеты потоков, регулировку громкости, поведение при ограничении сигнала по амплитуде, бюджет памяти и реакцию на срыв срока обработки входным файлом или декодером. Для определения границ ответственности во время работы используйте статью Audio Server и буферизация.

Адаптируйте пример, сохранив проверяемые условия

Таблица: проверки при адаптации аудиопримеров к изделию
Область Что взять из примера Что проверить заново для изделия
Аппаратная часть Проверенную разводку платы и поддерживаемый тракт периферии Модель микрофона или динамика, усиление, линии питания, мультиплексирование выводов, разводку и доступ для производственного тестирования
Конфигурация Минимальный набор включённых компонентов SDK Память, файловую систему, кодеки, Audio Manager и флаги функций, реально необходимые изделию
Аудиоданные Формат отсчётов и заведомо исправные файлы Частоту дискретизации, число каналов, размеры буферов, целевую задержку и обработку ошибок
Работа во время выполнения Базовую последовательность захвата или воспроизведения Параллельную работу UI, Bluetooth и накопителя, переходы в режимы пониженного энергопотребления, восстановление и завершение сеанса
Подтверждение результата Ожидаемое поведение по официальной документации Журнал последовательного порта, файлы записи/воспроизведения, измеренный ток и воспроизводимый регрессионный тест

Последнее обновление: