国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

audio核心庫的運行機制與技術要點

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2026-02-06 19:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

音頻系統核心庫的穩定運行,是實現低延遲、高保真音頻體驗的前提。其內部通過精密的線程調度、緩沖區管理與設備驅動交互,保障音頻數據的連續性與同步性。本文將聚焦其運行機制,逐層拆解關鍵技術要點,幫助開發者洞察音頻系統背后的工程智慧。


一、概述

audio 核心庫 是指 LuatOS 通過對 es8311 或者 TM8211 編解碼器進行配置以及傳輸,從而實現錄音,播放音頻,播放 TTS(文字轉語音)功能,由于此核心庫開發較早,歷史包袱導致參數過多,使用非常不方便,建議使用exaudio擴展庫。

重要概念解釋:

1.1 硬件 DAC&ADC

也常稱為 codec(編碼器) ,decoder(解碼器) 音頻的編解碼芯片,目前僅支持"es8311","TM8211",其中 es8311 支持 模擬音頻轉數據音頻的輸入,即為錄音,也支持數據音頻轉為模擬音頻的輸出,即為播放。

1.2采樣率:

決定 “聲音會不會漏了高頻細節”(比如沒抓住小鳥叫),采樣率越高,細節越豐富,但是占用的空間也越大

1.3 位深:

決定 “聲音的音量變化會不會生硬”(比如能不能分清小聲說話和輕聲咳嗽),使用 bit 表示,表示單次采樣,模擬量使用數據量保存的位數,位數越高質量越高,占用空間越大

1.4 流式播放

一邊傳輸音頻數據,一邊進行播放,適合一些對實時性要求較高的場景,或者需要對音頻進行編碼的場景

1.5 流式錄音

一邊錄音,一邊上傳數據,適合對錄音實時性要求較高或者需要對音頻進行編碼的場景。

1.6 es8311 和 TM8211 的區別

es8311 支持音頻的編碼和解碼,即支持錄音和播放,如果需要打電話,則需要使用 es8311

TM8211 僅支持音頻的解碼,即支持播放

es8311 相對于 TM8211 需要一路 I2C 作為信令的收發,因此電路上 TM8211 要更為簡單.

780EHV 模塊內部集成了 es8311,方便大家使用音頻相關功能,并使用 GPIO20 控制 es8311 的使能;Air8000 以及 Air780 系列其他型號內部不含 es8311,需要外掛,

1.7 audio、exaudio、codec 三個庫文件的區別和聯系

audio、codec 是核心庫,可以調用的最底層的代碼,exaudio 是擴展庫

audio 庫和 exaudio 庫都是實現了錄音和播放,但是 exaudio 使用更加簡單,去掉了歷史原因造成的 audio 的冗余參數

codec 庫 是實現了音頻數據的編碼和解碼,不會對音頻直接播放,audio 和 exaudio 可以對編解碼后的音頻進行播放

1.8 audio 核心庫使用相關組合關系圖

如圖所示,audio 核心庫大致可以分為如下幾種組合關系,用戶可根據所需功能自行搭配

wKgZPGmFwsaAOaAhAAJmOzKmHyA453.png

二、核心示例

1、核心示例是指:使用本庫文件提供的核心 API,開發的基礎業務邏輯的演示代碼;

2、核心示例的作用是:幫助開發者快速理解如何使用本庫,所以核心示例的邏輯都比較簡單;

3、由于 audio 核心庫使用起來比較復雜,所以目前已經不推薦使用 audio 核心庫,而是推薦使用 exaudio 擴展庫來開發音頻應用

4、此處僅僅簡單地列舉 audio 核心庫中少數 api 的使用方法,供大家學習理解使用

wKgZPGmFwuWAJk37AAN4FQmV8as043.png

三、常量詳解

這些常量用于 audio 庫的各種配置和操作,在腳本代碼中不需要聲明,可直接調用。

3.1 音頻格式常量

這些常量用于指定音頻數據的格式:

audio.PCM

wKgZO2mFwv-AEvMaAAB-0XNAevc949.png


3.2 音頻事件常量

這些常量用于 audio.on() 回調函數中的事件類型

audio.MORE_DATA

wKgZPGmFwxiAbUWBAAE35FrLxM8473.png


audio.DONE

wKgZPGmFwymABHYJAAEG2EeE1zc478.png


audio.RECORD_DATA

wKgZO2mFwzqAdKrvAAGFMC4RjDs982.png


audio.RECORD_DONE

wKgZPGmFw1SAYVotAADtES_Zt0c541.png


3.3 休眠模式常量

這些常量用于 audio.pm() 函數的休眠模式

audio.RESUME

wKgZO2mFw2uAAW1hAAC7dAqqAlo583.png


audio.STANDBY

wKgZPGmFw3yAFGUcAADVGPentUo202.png


audio.SHUTDOWN

wKgZO2mFw42AXhWOAADSKiyV8s4435.png


audio.POWEROFF

wKgZO2mFw5-AV0fzAADO4rTEZYM156.png


四、函數詳解


4.1 配置相關

配置相關函數用于音頻硬件配置、參數設置和事件注冊。

audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay)

功能

配置音頻硬件參數。

參數

id

wKgZPGmFw7KAEDsYAAC4VVOvRQw038.png

paPin

wKgZO2mFw8SAbmtxAAD2QSm3VqM325.png

onLevel

wKgZPGmFw9iAK4nyAAEdGWpvd-Y759.png

dacDelay

wKgZPGmFw-aADpTdAAJH4gEAkmU263.png

paDelay

wKgZPGmFxACATzN7AAJOfb2mj54254.png

dacPin

wKgZPGmFxBWALmbHAAEOQS5BDx4681.png

dacLevel

wKgZPGmFxCmALfgXAAD0iP-W8HE158.png


dacTimeDelay

wKgZPGmFxECAVYGhAAISH2DgEVs723.png

返回值

示例

wKgZPGmFxF2AAinZAABLM_DhzeQ906.png


audio.setBus(id, bus_type, config_table)

功能

配置音頻 DAC(編解碼器)

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png

bus_type

wKgZPGmFxISAFo5CAADU0fl9gjk835.png

config_table

wKgZO2mFxJuAOizBAALUGefszV4543.png

返回值

local result = audio.setBus(id, bus_type, config_table)

result

wKgZO2mFxL6AJJDfAACZICytSns069.png

例子

wKgZPGmFxM6AJ4NfAABs49Fx86A963.png

audio.vol(id, value)

功能

設置播放音量

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png

value

wKgZO2mFxPWAX4coAAEAR7zziC8689.png


返回值

local result = audio.vol(id, value)

result

wKgZPGmFxRCALKKgAACLmo7AVbU920.png


例子

wKgZO2mFxSCACgs0AABFvSm4eFw292.png


audio.micVol(id, value)

功能

設置 mic 音量

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


value

wKgZPGmFxUiAAO0vAADSLX1Kg3Y784.png


返回值

local result = audio.micVol(id, value)

result

wKgZO2mFxWGAKifuAACW3Im3rB0761.png


例子

wKgZO2mFxXeAUN3aAABC-CqTuIY015.png


audio.on(id, callback)

功能

注冊音頻事件回調函數

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


callback

wKgZPGmFxZ2AU2VbAAPi_BP0_Gc351.png


返回值

例子

wKgZO2mFxbWAMupJAAHpqhHSrqA594.png


audio.pm(id,pm_mode)

功能

休眠控制(一般會自動調用 RESUME 模式)

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


pm_mode

wKgZPGmFxeOAfOWMAAPoawIvhh0075.png


返回值

local result = audio.pm(id,pm_mode)

result

wKgZPGmFxf6AMxnbAACXZwucQak715.png


例子

wKgZPGmFxg-ADvmBAAA9ih6ZkgM090.png


4.2 檢查相關

檢查相關函數用于獲取音頻狀態、錯誤信息和調試信息。

audio.getError(id)

功能

獲取最近一次播放結果

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


返回值

local result = audio.getError(id)

result

wKgZO2mFxjeAVGFnAACvUVqlqkU159.png

user_stop

wKgZO2mFxkiAaetXAACs0-5Hqpw386.png

file_no

wKgZO2mFxmiAXpVlAADhR5nbIEo907.png

例子

wKgZPGmFxoKAZ-60AAA5VidlOSU627.png

audio.isEnd(id)

功能

檢查音頻通道是否播放結束

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


返回值

local result = audio.isEnd(id)

result

wKgZO2mFxq6AVM6NAACQdaaZCBA722.png


例子

wKgZPGmFxsSATamgAAA5zClFmzk735.png


audio.debug(on_off)

功能

配置調試信息輸出

參數

on_off

wKgZPGmFxtuAFWJYAADaD1QGnJs273.png


返回值

例子

wKgZO2mFxu6ADLDCAAA2VH0RYRQ795.png


4.3 播放相關

播放相關函數,用于音頻播放控制。

audio.play(id, path, errStop)

功能

播放音頻文件或者停止播放(可以是文件或 TTS)

注意事項:

1、播放完成后,會回調一個 audio.DONE 消息

2、可以用 pause 來暫停或者恢復

3、audio.play(0) 即為停止播放,可以停止文件或 TTS

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


path

wKgZPGmFxxSAEJV2AAJWQKogGVM676.png

errStop

wKgZPGmFxzKAdn5eAAFT-_dUhEQ018.png


返回值

local result = audio.play(id, path, errStop)

result

wKgZPGmFx02AXD7gAACX6sIFvs0650.png


例子

wKgZO2mFx3CATwPmAACnhjG0gQU578.png


audio.pause(id, pause)

功能

暫停或恢復播放

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


pause

wKgZPGmFx5SAf2d0AADATrJHhGU681.png


返回值

local result = audio.pause(id, pause)

result

wKgZO2mFx7GAEJvDAACXPH2QVUo674.png

例子

wKgZO2mFx8GAEV-8AABv4IWuGG0233.png


audio.playStop(id)

功能

停止播放音頻文件,等同于 audio.play(id)

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png


返回值

local result = audio.playStop(id)

result

wKgZO2mFx_WAH1zmAACPQqF_kjQ205.png


例子

wKgZPGmFyAWAc57NAABB4LYTFP8992.png


audio.tts(id, text)

功能

播放或暫停播放 TTS 文本轉語音

參數

id

wKgZO2mFxHSAWJjiAACrtB_bcuA429.png

text

wKgZO2mFyDKACW4NAADL6zG0X2g470.png


返回值

local result = audio.tts(id, text)

result

wKgZPGmFyEmAJu9fAACNdduQlBA960.png


例子

wKgZPGmFyFmADR-2AABqqsz3W10799.png


audio.start(id,audio_format, num_channels, sample_rate, bits_per_sample, is_signed)

功能

啟動一個音頻通道,僅用于流式播放。

參數

id

wKgZPGmFyHOAQ6mcAAC-v4vzRjU176.png


audio_format

wKgZPGmFyISAEETGAADGRjF-5C8869.png


num_channels

wKgZPGmFyJiAAxDEAAC1HLDCUW4949.png


sample_rate

wKgZO2mFyKyAR6jYAADjyO3SMA8007.png


bits_per_sample

wKgZPGmFyMSAdCFGAAETY7LrVNc054.png


is_signed

wKgZPGmFyNiAHlafAAD2Xhk7BZY940.png


返回值

local result = audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed)

result

wKgZO2mFyOuAY-J-AACPQBIRPhE063.png


示例

wKgZPGmFyPqAa21cAAEZxR3bV3U330.png


audio.write(id, data)

功能

向音頻通道中寫入音頻數據,用于播放

參數

id

wKgZO2mFyQ6ADOIvAAC-zHfbl4s569.png

data

wKgZPGmFySGACVdJAAEA-527ryI012.png


返回值

local result = audio.write(id, data)

result

wKgZPGmFyTmAL7lyAACSLWUfKzI711.png


示例

wKgZPGmFyUmAalTYAAApcuUfLzM942.png


audio.finish(id)

功能

寫入最后一塊數據后,通知多媒體通道已經沒有更多數據需要播放了

參數

id

wKgZPGmFyHOAQ6mcAAC-v4vzRjU176.png


返回值

local result = audio.finish(id)

result

wKgZO2mFyW6AVGmiAACQ8KOgiBk837.png

示例

wKgZPGmFyYGAJ9RWAAGkRQ3TXto155.png


audio.stop(id)

功能

停止指定的多媒體通道

參數

id

wKgZPGmFyHOAQ6mcAAC-v4vzRjU176.png


返回值

local result = audio.stop(id)

result

wKgZO2mFya-AFxmCAACQg0erKNQ643.png


示例

wKgZPGmFyb-AB2OaAACYegmvNpM229.png


audio.record(id, record_type, record_time, amr_quailty, path, nil, buff0, buff1,channelCount)

功能

錄音

參數

id

wKgZPGmFyHOAQ6mcAAC-v4vzRjU176.png


record_type

wKgZPGmFyeuAK7f0AAETAMLf_O8505.png


record_time

wKgZO2mFygeAdh-kAADFfDAQ7jQ034.png


amr_quailty

wKgZO2mFyi6ASZEKAAGnjXvjytU887.png


path

wKgZPGmFykKAZ0iYAAFHAIs_sp0062.png


reserved

wKgZPGmFylSAF3KiAAC8ky0-AUY635.png


buff0

wKgZPGmFymWAXWb1AAElk0SEwjM068.png


buff1

wKgZO2mFynaAFvZvAAEdbhRL9PA252.png


返回值

local result = audio.record(id, record_type, record_time, amr_quailty, path, nil, buff0, buff1,channelCount)

result

wKgZO2mFyomAPVTYAACGATdfFO4007.png


示例 1: 錄制到文件

wKgZO2mFypqAcH_5AAA7zDqb3ho310.png


示例 2: 流式錄音

wKgZPGmFyq6AY4wzAAH5UVw-3Tk030.png


audio.recordStop(id)

功能

停止錄音

注意:audio 的回調函數返回 audio.RECORD_DONE 的 event 才是真正的結束

參數

id

wKgZPGmFyHOAQ6mcAAC-v4vzRjU176.png


返回值

local result = audio.recordStop(id)

result

wKgZO2mFytuACW9jAACES4UliY4308.png


示例

wKgZPGmFyu2AYw5tAAAl4eUn3VY641.png


五、模組支持說明

780EHM,780EHV,780EGH,780EGG,以及 8000 全系列均支持;

780EPM,780EGP,700ECP 不支持。

724,722,720,820,795 也不支持。

今天的內容就分享到這里了~

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • audio
    +關注

    關注

    1

    文章

    332

    瀏覽量

    61399
  • 音頻系統
    +關注

    關注

    2

    文章

    144

    瀏覽量

    28779
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    操作系統運行機制

    ,按截止時間控制運行的實現;在批處理系統中,通過時鐘管理來衡量一個作業的運行程度等。因此,系統管理的方方面面無不依賴于時鐘。   2) 中斷機制   引入中斷技術的初衷是提高多道程
    發表于 01-15 07:12

    LE Audio藍牙模塊方案:重塑無線音頻新體驗

    ? 在無線音頻技術日新月異的今天,藍牙模塊作為連接設備的核心組件,其性能與功能直接決定了用戶體驗的優劣。近期,基于LE Audio標準的新一代藍牙模塊方案橫空出世,以其卓越的技術特性和
    的頭像 發表于 01-06 17:42 ?1546次閱讀

    FSKV核心開發實戰:API詳解與Demo演示

    主要特性 相比于傳統的FDB,FSKV在性能方面有顯著提升,同時保持了API的簡潔易用。通過均衡擦寫機制,FSKV還能有效延長Flash存儲器的使用壽命,確保在設備整個生命周期內數據的可靠存儲。 1.1 ?核心特點: 持久化存
    的頭像 發表于 12-12 19:06 ?159次閱讀
    FSKV<b class='flag-5'>核心</b><b class='flag-5'>庫</b>開發實戰:API詳解與Demo演示

    藍牙模塊低功耗新突破:LE Audio技術詳解(LC3編解碼/多設備串流/廣播音頻)

    Audio是藍牙技術聯盟(SIG)在2020年推出的全新音頻技術標準,以低功耗藍牙5.2為基礎,采用ISOC(isochronous)架構,引入了創新的LC3音頻編碼算法,具有更低的延遲和更高的傳輸質量,同時
    的頭像 發表于 12-10 11:20 ?1586次閱讀
    藍牙模塊低功耗新突破:LE <b class='flag-5'>Audio</b><b class='flag-5'>技術</b>詳解(LC3編解碼/多設備串流/廣播音頻)

    儲能系統為何拉低功率因數、產生諧波?深層機制與治理策略全解析

    這兩大問題已成為儲能并網后電網穩定運行核心挑戰,需從技術原理層面拆解影響機制,為工程應用提供解決方案。
    的頭像 發表于 11-25 08:43 ?1071次閱讀
    儲能系統為何拉低功率因數、產生諧波?深層<b class='flag-5'>機制</b>與治理策略全解析

    如何從 flash 把代碼搬運到 ram 中運行的?

    沒有已經移植適配過的芯片 運行機制是從 flash 把代碼搬運到 ram 中運行
    發表于 09-28 11:03

    教程來啦!LuatOS中的消息通信機制詳解及其應用場景

    。 LuatOS 的消息機制是其多任務協作和事件驅動編程的核心部分,主要通過?sys?核心實現。 消息機制包括消息的發送、接收、訂閱,以及
    的頭像 發表于 09-26 18:59 ?424次閱讀
    教程來啦!LuatOS中的消息通信<b class='flag-5'>機制</b>詳解及其應用場景

    HTTP開發必備:核心與httpplus擴展應用示例全攻略

    HTTP開發的必備參考!本文匯總核心基礎操作與httpplus擴展高級特性,通過示例解析,讓你快速上手各類HTTP開發需求。
    的頭像 發表于 09-20 15:19 ?3197次閱讀
    HTTP開發必備:<b class='flag-5'>核心</b><b class='flag-5'>庫</b>與httpplus擴展<b class='flag-5'>庫</b>應用示例全攻略

    Task任務:LuatOS實現“任務級并發”的核心引擎

    Task任務通過其強大的并發處理能力,使LuatOS能夠在單線程環境中模擬多線程執行,通過協程的掛起與恢復機制,實現任務級的并行操作,顯著提升系統效能。 sys核心是LuatOS運行
    的頭像 發表于 08-28 13:49 ?508次閱讀
    Task任務:LuatOS實現“任務級并發”的<b class='flag-5'>核心</b>引擎

    輕量級加密解密:Crypto核心守護數據安全的終極答案

    在數據安全領域,“重量級”不等于“強效”。Crypto核心摒棄臃腫設計,聚焦輕量化創新,通過精簡算法與高效邏輯,實現加密解密的雙重突破——既讓數據安全無懈可擊,又讓系統運行輕如鴻毛。 加解密算法
    的頭像 發表于 08-04 14:41 ?870次閱讀
    輕量級加密解密:Crypto<b class='flag-5'>核心</b><b class='flag-5'>庫</b>守護數據安全的終極答案

    三大核心網絡設備的運維要點

    作為運維工程師,熟練掌握網絡設備的管理和維護是構建穩定IT基礎架構的關鍵。本文將深入探討交換機、路由器和防火墻這三大核心網絡設備的運維要點,從基礎配置到高級故障排除,為您提供全面的技術指導。
    的頭像 發表于 07-22 16:35 ?1049次閱讀

    LE-Audio是什么?

    近年來,隨著藍牙技術的快速發展,無線通信領域的應用變得越來越廣泛。然而,在對音頻質量和功耗不斷追求的同時,藍牙技術也需要不斷創新和改進。在這方面,LE-Audio(低功耗音頻)作為一項新興技術
    發表于 06-28 21:32

    解鎖CAN接口開發高效路徑!五個核心要點一次講透

    高效開發CAN接口,關鍵在于把握協議基礎、硬件適配、錯誤管理、性能優化與調試五大核心要點。下面將逐一剖析每個環節的技術細節與實踐方法,助力開發者快速突破難點,實現可靠通信。 在Air780EPM上
    的頭像 發表于 06-23 16:08 ?1368次閱讀
    解鎖CAN接口開發高效路徑!五個<b class='flag-5'>核心要點</b>一次講透

    藍牙LE Audio技術簡介和優勢分析

    藍牙LE Audio,也稱為低功耗音頻(Bluetooth Low Energy Audio),是藍牙技術家族中的最新成員,專門為音頻傳輸而設計。它繼承了藍牙低功耗(Bluetooth Low
    的頭像 發表于 05-21 16:08 ?4561次閱讀

    揭秘LuatOS:實時操作系統RTOS核心的關鍵技術剖析!

    為滿足實時控制場景的嚴苛需求,LuatOS核心采用搶占式調度策略,確保高優先級任務即時響應。通過靜態內存分配和零拷貝通信機制,系統不僅避免了動態內存碎片問題,還大幅提升了任務間數據交換效率,適用于
    的頭像 發表于 05-21 16:02 ?662次閱讀
    揭秘LuatOS:實時操作系統RTOS<b class='flag-5'>核心</b><b class='flag-5'>庫</b>的關鍵<b class='flag-5'>技術</b>剖析!