chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通話錄音功能實(shí)現(xiàn):自動(dòng)接聽(tīng) + 自動(dòng)錄音開(kāi)源方案

合宙LuatOS ? 2026-04-13 13:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AirUI 可視化方案仍在優(yōu)化中,其輕量化、低成本、高可靠的特性在工業(yè)場(chǎng)景具備一定應(yīng)用價(jià)值。針對(duì)用戶對(duì)通話錄音功能的需求,本文提供一套可直接落地的實(shí)現(xiàn)方案,支持自動(dòng)接聽(tīng)與自動(dòng)錄音,適用于暫無(wú)需可視化 UI 的場(chǎng)景參考。

一、方案功能
基于LuatOS開(kāi)發(fā),適配多種型號(hào)核心板,可實(shí)現(xiàn)低成本通話留痕,適用于客服系統(tǒng)、會(huì)議記錄、遠(yuǎn)程問(wèn)診、話務(wù)工單追溯等場(chǎng)景。

主要功能特色如下:

自動(dòng)接聽(tīng): 來(lái)電響鈴2聲后自動(dòng)接聽(tīng),無(wú)需手動(dòng)操作。

自動(dòng)錄音: 通話接通后自動(dòng)開(kāi)始錄音,對(duì)方掛斷后自動(dòng)停止。

SD卡存儲(chǔ): 錄音文件以PCM格式保存到SD卡,支持自動(dòng)掛載和空間檢測(cè)。

數(shù)據(jù)優(yōu)化: 只保存上行數(shù)據(jù),避免下行數(shù)據(jù)造成的回聲問(wèn)題。

跨模組兼容: Air780EHM、Air780EGH、Air780EHV、Air8000系列核心板,均可通過(guò)外掛音頻配件板和SD卡存儲(chǔ)配件板實(shí)現(xiàn)。

簡(jiǎn)而言之:一套方案搞定多個(gè)硬件型號(hào),極大提升開(kāi)發(fā)效率。

二、主要硬件準(zhǔn)備
方案一:Air8000/Air780EHV開(kāi)發(fā)板

開(kāi)發(fā)板提供了豐富的音頻接口資源,可通過(guò)開(kāi)發(fā)板上的音頻接口進(jìn)行連接和測(cè)試。

如Air8000/Air780EHV開(kāi)發(fā)板:

wKgZO2ncfY6AYoGSABp3sKCAJA0239.png

方案二:核心板+配件板

如果沒(méi)有Air780EHV和Air8000系列Turnkey開(kāi)發(fā)板,那么可使用Air780EHM、Air780EGH、Air780EHV、Air8000系列核心板,通過(guò)外掛音頻配件板和存儲(chǔ)配件板來(lái)實(shí)現(xiàn)通話錄音功能。

AirAUDIO_1010音頻配件板: 負(fù)責(zé)音頻輸入輸出;

AirMICROSD_1010存儲(chǔ)配件板: 提供SD卡存儲(chǔ)功能。

連接小貼士: 如果搭配AirAUDIO_1010擴(kuò)展板測(cè)試,需將擴(kuò)展板中PA開(kāi)關(guān)撥到OFF,讓軟件控制PA,避免pop音。

本文以Air780EGH為例:

接線方式參照下方圖表對(duì)應(yīng)連接(注意不同型號(hào)核心板具體引腳號(hào)差異):

wKgZO2ncfcaADN0oABUG9Ev8m6w734.png

wKgZPGncfeCAfg0dAAUthHXjVAo797.png

三、開(kāi)源示例與教程
基于LuatOS開(kāi)發(fā)的通話錄音示例已上傳Gitee開(kāi)源倉(cāng)庫(kù),即便是新接觸LuatOS開(kāi)發(fā)的朋友,也可以根據(jù)合宙資料中心提供配套實(shí)操教程快速上手。

核心功能模塊包括SD卡掛載、通話狀態(tài)機(jī)、錄音數(shù)據(jù)回調(diào)等,完整示例代碼詳見(jiàn)源碼倉(cāng)庫(kù)最新文件。

--[[ 錄音功能特性: - 錄音文件保存為PCM格式:/sd/record_call.pcm - 只保存上行數(shù)據(jù)(包含本地聲音和網(wǎng)絡(luò)回聲) - 下行數(shù)據(jù)自動(dòng)跳過(guò),避免重復(fù)存儲(chǔ) - 支持SD卡自動(dòng)掛載和空間檢測(cè) -- ====================== 錄音功能 ====================== -- 創(chuàng)建音頻數(shù)據(jù)緩沖區(qū) local up1 = zbuff.create(BUFFER_SIZE,0) -- 上行數(shù)據(jù)保存區(qū)1 local up2 = zbuff.create(BUFFER_SIZE,0) -- 上行數(shù)據(jù)保存區(qū)2 local down1 = zbuff.create(BUFFER_SIZE,0) -- 下行數(shù)據(jù)保存區(qū)1 local down2 = zbuff.create(BUFFER_SIZE,0) -- 下行數(shù)據(jù)保存區(qū)2 -- 打開(kāi)錄音文件 local function open_record_file() -- 先掛載SD卡 if not mount_sd_card() then log.error("錄音文件", "SD卡掛載失敗,無(wú)法進(jìn)行錄音") return false end log.info("錄音文件", "SD卡掛載成功,錄音文件將保存到SD卡") -- 關(guān)閉已打開(kāi)的文件 if record_file then record_file:close() record_file = nil end -- 刪除舊錄音文件 if io.exists(RECORD_FILE_PATH) then os.remove(RECORD_FILE_PATH) log.info("錄音文件", "刪除舊錄音文件:", RECORD_FILE_PATH) end -- 創(chuàng)建錄音文件 record_file = io.open(RECORD_FILE_PATH, "wb") if record_file then log.info("錄音文件", "創(chuàng)建錄音文件成功:", RECORD_FILE_PATH) record_start_time = mcu.ticks() is_recording_to_file = true return true else log.error("錄音文件", "創(chuàng)建錄音文件失敗:", RECORD_FILE_PATH) return false end end -- 關(guān)閉錄音文件 local function close_record_file() if record_file then record_file:close() record_file = nil local file_size = io.fileSize(RECORD_FILE_PATH) record_duration = (mcu.ticks() - record_start_time) / 1000 -- 轉(zhuǎn)換為秒 log.info("錄音文件", "錄音完成", "文件大小:", file_size, "字節(jié)", "錄音時(shí)長(zhǎng):", string.format("%.1f", record_duration), "秒", "路徑:", RECORD_FILE_PATH) is_recording_to_file = false record_start_time = 0 record_duration = 0 end end -- 寫(xiě)入錄音數(shù)據(jù)到文件 local function write_record_data(buff, is_downlink) if not record_file or not is_recording_to_file then return false end -- 保存數(shù)據(jù) if not is_downlink then local data_size = buff:used() if data_size > 0 then local start_time = mcu.ticks() -- 寫(xiě)入數(shù)據(jù)到文件 record_file:write(buff:query()) local end_time = mcu.ticks() local write_time = end_time - start_time local write_speed = data_size / (write_time / 1000) -- 字節(jié)/秒 log.info("錄音寫(xiě)入", "數(shù)據(jù)大小:", data_size, "字節(jié),", "寫(xiě)入耗時(shí):", string.format("%.2f", write_time), "ms,", "寫(xiě)入速度:", string.format("%.2f", write_speed / 1024), "KB/s") return true end else -- 下行數(shù)據(jù)不保存,只記錄日志 -- 寫(xiě)入下行數(shù)據(jù)會(huì)導(dǎo)致文件內(nèi)有回聲 local data_size = buff:used() if data_size > 0 then log.info("錄音寫(xiě)入", "下行數(shù)據(jù)跳過(guò)", "數(shù)據(jù)大小:", data_size, "字節(jié)") end end return false end -- 音頻數(shù)據(jù)回調(diào)函數(shù) local function recordCallback(is_dl, point) if is_dl then log.info("錄音", "下行數(shù)據(jù),位于緩存", point+1, "緩存1數(shù)據(jù)量", down1:used(), "緩存2數(shù)據(jù)量", down2:used()) -- 處理下行數(shù)據(jù) if point == 0 then write_record_data(down1, true) down1:del() -- 清空緩沖區(qū) else write_record_data(down2, true) down2:del() -- 清空緩沖區(qū) end else log.info("錄音", "上行數(shù)據(jù),位于緩存", point+1, "緩存1數(shù)據(jù)量", up1:used(), "緩存2數(shù)據(jù)量", up2:used()) -- 處理上行數(shù)據(jù) if point == 0 then write_record_data(up1, false) up1:del() -- 清空緩沖區(qū) else write_record_data(up2, false) up2:del() -- 清空緩沖區(qū) end end log.info("通話質(zhì)量", cc.quality()) end -- 啟用通話錄音 local function enableRecording() cc.record(true, up1, up2, down1, down2) cc.on("record", recordCallback) log.info("cc_app", "通話錄音已啟用") end -- 開(kāi)始通話錄音到文件 local function start_call_recording() if open_record_file() then log.info("通話錄音", "開(kāi)始錄音到文件:", RECORD_FILE_PATH) return true else log.error("通話錄音", "無(wú)法開(kāi)始錄音到文件,請(qǐng)檢查SD卡") return false end end -- 停止通話錄音到文件 local function stop_call_recording() close_record_file() log.info("通話錄音", "停止錄音到文件") end -- 獲取所有緩沖區(qū) local function getRecordingBuffers() return { up1 = up1, up2 = up2, down1 = down1, down2 = down2 } end -- 獲取錄音文件信息 local function get_record_file_info() if io.exists(RECORD_FILE_PATH) then local file_size = io.fileSize(RECORD_FILE_PATH) return { path = RECORD_FILE_PATH, size = file_size, duration = record_duration, exists = true } else return { path = RECORD_FILE_PATH, size = 0, duration = 0, exists = false } end end -- 呼入自動(dòng)接聽(tīng),等待對(duì)方掛斷 local function handle_scenario(status) if status == "INCOMINGCALL" then -- 獲取來(lái)電號(hào)碼 caller_number = cc.lastNum() or "未知號(hào)碼" call_counter = call_counter + 1 log.info("收到來(lái)電,號(hào)碼:", caller_number, "響鈴次數(shù):", call_counter) -- 響鈴2聲后自動(dòng)接聽(tīng) if call_counter >= 2 then log.info("自動(dòng)接聽(tīng)來(lái)電") cc.accept(0) call_counter = 0 -- 重置計(jì)數(shù)器 end elseif status == "SPEECH_START" then -- 語(yǔ)音通話真正開(kāi)始 log.info("電話已接通,電話號(hào)碼:", caller_number) -- 開(kāi)始通話錄音到文件 start_call_recording() elseif status == "DISCONNECTED" then -- 對(duì)方掛斷通話 log.info("通話結(jié)束對(duì)方掛斷") -- 停止通話錄音到文件 stop_call_recording() call_counter = 0 -- 重置計(jì)數(shù)器 end end -- ====================== 主事件處理器 ====================== sys.subscribe("CC_IND", function(status) log.info("CC狀態(tài)", status) handle_scenario(status) -- 需要處理的通用狀態(tài) if status == "READY" then sys.publish("CC_READY") -- 發(fā)布系統(tǒng)就緒事件 elseif status == "HANGUP_CALL_DONE" or status == "MAKE_CALL_FAILED" or status == "DISCONNECTED" then exaudio.pm(audio.SHUTDOWN) --主動(dòng)進(jìn)入低功耗模式 end end) -- ====================== 電話系統(tǒng)初始化 ====================== local function init_cc() -- 先嘗試掛載SD卡 mount_sd_card() -- 初始化音頻設(shè)備 audio_drv.initAudioDevice() -- 等待電話系統(tǒng)就緒 sys.waitUntil("CC_READY") -- 初始化電話功能 cc.init(audio_drv.getMultimediaId()) -- 啟用通話錄音(錄音功能在cc_app中) enableRecording() log.info("cc_app", "電話系統(tǒng)初始化完成") end -- 啟動(dòng)初始化任務(wù) sys.taskInit(init_cc) 四、使用注意事項(xiàng) 必須插入SD卡才能使用錄音功能,因?yàn)殇浺粑募^大無(wú)法存入內(nèi)存;緩沖區(qū)大小必須是640的倍數(shù),否則可能導(dǎo)致錄音異常。

四、使用注意事項(xiàng)

必須插入SD卡才能使用錄音功能,因?yàn)殇浺粑募^大無(wú)法存入內(nèi)存;緩沖區(qū)大小必須是640的倍數(shù),否則可能導(dǎo)致錄音異常。

錄音文件保存在SD卡的/sd/record_call.pcm路徑下,可以通過(guò)讀卡器在電腦上查看;錄音文件為原始PCM格式,需要使用專用播放器(如Audacity)播放。

wKgZO2ncfw6APds2AADiMWJCQxw308.png


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Lua
    Lua
    +關(guān)注

    關(guān)注

    0

    文章

    90

    瀏覽量

    11506
  • 通話錄音
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1125
  • 物聯(lián)網(wǎng)開(kāi)發(fā)

    關(guān)注

    0

    文章

    12

    瀏覽量

    1936
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    169

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    解決蘋果手機(jī)通話不能錄音的問(wèn)題

    的iphone7,也是一樣沒(méi)有通話錄音功能的。為這個(gè)問(wèn)題,也在很多地方找過(guò)解決辦法,比較常見(jiàn)的的一種解決辦法,就是第三方錄音軟件。這樣的軟件大部分是有一個(gè)時(shí)間的免費(fèi)試用時(shí)間,比如可以免費(fèi)試錄5分鐘
    發(fā)表于 11-08 16:27

    iPhone6手機(jī)通話時(shí)怎么錄音?,完美攻略get起來(lái)吧~

    通話錄音便是其中的一項(xiàng),通話錄音功能對(duì)于一些人的幫助還是蠻大的,畢竟在當(dāng)下社會(huì)風(fēng)氣下,有很多東西都是需要證據(jù)的,而這項(xiàng)功能無(wú)疑對(duì)于一些人來(lái)說(shuō)還是有很大的需求的,并且是保護(hù)自身的一種方
    發(fā)表于 12-05 19:17

    8路電話錄音

    多路通話錄音(單機(jī)多達(dá)128路); 錄音任一路的實(shí)時(shí)通話情況; 在本機(jī)和網(wǎng)絡(luò)查詢、錄音任一個(gè)錄音; 系統(tǒng)24小時(shí)不間斷
    發(fā)表于 06-05 10:15 ?640次閱讀

    8路電話錄音

    主要功能 多路通話錄音(單機(jī)多達(dá)128路); 錄音任一路的實(shí)時(shí)通話情況; 在本機(jī)和網(wǎng)絡(luò)查詢、錄音任一個(gè)
    發(fā)表于 06-12 15:20 ?904次閱讀

    電話錄音,電話錄音系統(tǒng),電話錄音卡,電話錄音

    主要功能 多路通話錄音(單臺(tái)電腦可組建1~128路電話錄音系統(tǒng)); 錄音任一路的實(shí)時(shí)通話情況; 在本機(jī)和網(wǎng)絡(luò)查詢、
    發(fā)表于 07-30 10:05 ?765次閱讀

    錄音電話,錄音電話是什么意思

    錄音電話,錄音電話是什么意思 錄音電話指具有能自動(dòng)應(yīng)答和對(duì)通話內(nèi)容進(jìn)行錄音
    發(fā)表于 03-06 17:31 ?2262次閱讀

    做好通話錄音設(shè)備,要考量這幾個(gè)方面

      在給許多客服打電話的時(shí)候,你肯定會(huì)聽(tīng)到以下對(duì)白,“為了保障你的利益,你的通話可能會(huì)被錄音”。但是你知道是怎么錄音的嗎?用一支錄音筆放在電話機(jī)旁邊?用以前老港片里面用的那種磁帶式模擬
    發(fā)表于 05-27 16:36 ?1988次閱讀

    電腦版本的通話錄音軟件有哪些

    ? ? 隨著時(shí)代的進(jìn)步,人民生活水平的提升,人們的通訊安全意識(shí)也在不斷的提高。手機(jī)上下載了各種錄音軟件、管家軟件。那么電腦版本的通話錄音軟件有哪些呢?今天就為大家推薦一款安全性高的通話錄音軟件
    發(fā)表于 07-09 13:34 ?1194次閱讀

    谷歌Android Pie系統(tǒng)正式推出,除了添加一些新特性外通話錄音功能遭遇封殺

    近日谷歌公司正式向外界推出Android Pie正式系統(tǒng)版本,這次更新又添加了一些新特性。新功能包含全新的導(dǎo)航UI、游戲保護(hù)、全局黑夜模式等,不過(guò)令人意外的是據(jù)外媒報(bào)道今年2月份添加的通話錄音功能被完全阻止,對(duì)眾多用戶來(lái)言并不能
    發(fā)表于 08-17 16:25 ?1280次閱讀

    ios15支持通話錄音功能嗎 蘋果如何設(shè)置通話錄音

    ios15支持通話錄音功能嗎?雖然蘋果公司已經(jīng)發(fā)布了ios15系統(tǒng),想必大家應(yīng)該還不知道如何設(shè)置ios15系統(tǒng)通話錄音功能,下面就由小編簡(jiǎn)單介紹一下!
    的頭像 發(fā)表于 06-11 09:59 ?2.8w次閱讀

    ios15出通話錄音,ios15有通話錄音

    由于蘋果手機(jī)對(duì)隱私保護(hù)看的很重要,所以就一直沒(méi)有通話錄音功能。隨著這次的ios15操作系統(tǒng)的發(fā)布,果粉們比較關(guān)注的問(wèn)題就是蘋果手機(jī)能否錄音。據(jù)小編關(guān)注的發(fā)布會(huì)來(lái)看,ios15系統(tǒng)包含了多項(xiàng)新
    的頭像 發(fā)表于 06-11 11:17 ?1.5w次閱讀

    電銷自動(dòng)外呼系統(tǒng)的主要功能都有哪些

    自動(dòng)外呼系統(tǒng)主要功能: 1、自動(dòng)外呼功能 可新建外呼任務(wù),批量導(dǎo)入電話號(hào)碼,不用手動(dòng)撥出,系統(tǒng)自動(dòng)進(jìn)行外呼,提高外呼效率。 2、
    發(fā)表于 07-16 17:07 ?2565次閱讀

    蘋果13有通話錄音功能

    iPhone13即將發(fā)布,也曝光了各種外觀、配置參數(shù)以及功能,網(wǎng)友們都很關(guān)注iPhone13有沒(méi)有通話錄音的這個(gè)功能,但是到目前為止還沒(méi)有看到有消息流出。由于iPhone對(duì)個(gè)人隱私權(quán)的看重,或許iPhone13依然不支持
    的頭像 發(fā)表于 09-10 10:50 ?4.8w次閱讀

    【蘋果神器來(lái)襲】錄音寶,讓你的通話錄音so easy!

    中,比如商務(wù)溝通、重要會(huì)議記錄、與家人朋友的珍貴對(duì)話等,通話錄音往往有著至關(guān)重要的作用。為了滿足廣大蘋果用戶對(duì)通話錄音這一功能的強(qiáng)烈需求;唯創(chuàng)知音公司精心研發(fā)并推
    的頭像 發(fā)表于 07-27 08:38 ?1718次閱讀
    【蘋果神器來(lái)襲】<b class='flag-5'>錄音</b>寶,讓你的<b class='flag-5'>通話錄音</b>so easy!

    工業(yè)場(chǎng)景通話錄音:LuatOS 開(kāi)源方案

    目前AirUI可視化方案仍在優(yōu)化階段,其輕量化、低成本、高可靠的特點(diǎn)已逐步顯現(xiàn),在工業(yè)場(chǎng)景中具有一定的應(yīng)用潛力。 考慮到大家對(duì)通話錄音功能的迫切需求,今天就為大家分享一套可直接實(shí)操的方案
    的頭像 發(fā)表于 04-14 12:36 ?52次閱讀
    工業(yè)場(chǎng)景<b class='flag-5'>通話錄音</b>:LuatOS <b class='flag-5'>開(kāi)源</b><b class='flag-5'>方案</b>