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

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

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

關(guān)于PWM實(shí)現(xiàn)語(yǔ)音播放的詳細(xì)過(guò)程

GReq_mcu168 ? 來(lái)源:ARM中文社區(qū) ? 作者:Xiaoya ? 2021-04-25 17:27 ? 次閱讀

事實(shí)上大部分MCU都可以實(shí)現(xiàn)語(yǔ)音播放

下面是一段音頻數(shù)據(jù)的波形

局部放大圖:

0751e2e6-a4ba-11eb-aece-12bb97331649.png

以一定的速度采樣(ADC)這些波形進(jìn)行存儲(chǔ),就是音頻數(shù)據(jù)了,所以播放就是按原來(lái)采樣的速率再用DAC輸出對(duì)應(yīng)的數(shù)據(jù)即可。

這里的音頻有兩個(gè)主要的參數(shù),采樣速率和采樣位數(shù)。

采樣速率:指1s中采樣多少個(gè)數(shù)據(jù)點(diǎn),比如1s種采集16000個(gè)點(diǎn),那么采樣率就是16KHz。采樣速率越高,越能抓到頻率較高的聲音,比如CD的采樣率就是44.1KHz,確保人耳能聽(tīng)到的聲音都會(huì)被抓到。

采樣位數(shù):指音頻幅度最大值與最小值分為了多少階,比如滿幅度是3.3V,如果是8Bit位數(shù),那么每一階就是3.3V/256 = 12.89mv,采樣位數(shù)越高,聲音細(xì)節(jié)越好。所以采樣速率和位數(shù)越高,聲音還原越逼真,但存儲(chǔ)的數(shù)據(jù)量也越大,一首三四分鐘的歌曲,如果不采用編碼按原始波形數(shù)據(jù)存儲(chǔ),數(shù)據(jù)量有好幾十兆大小,這涉及到音頻編碼的問(wèn)題,這里不展開(kāi)講了,有興趣的同學(xué)可以找相關(guān)資料。

接下來(lái)看怎么播放,最簡(jiǎn)單的當(dāng)然是把采樣(ADC)的數(shù)據(jù)按原樣輸出(DAC)了。但我們有些芯片本身不帶有DAC,所以只能用PWM代替DAC,PWM即脈沖寬度調(diào)制。這里只需要把DAC的幅度值轉(zhuǎn)換成PWM的占空比即可,例如16KHz 8Bit的聲音轉(zhuǎn)換成16Khz 256階占空比的PWM。但有一個(gè)問(wèn)題,如果用16KHz的PWM播放語(yǔ)音,聲音是可以播放,但有一個(gè)16Khz的諧波存在,這個(gè)聲音會(huì)被人耳聽(tīng)到,所以需要更高頻率的PWM,數(shù)據(jù)還是按照16Khz更新。

我這里使用32KHz的PWM,用16KHz 8Bit PCM格式的音頻數(shù)據(jù),8Bit的數(shù)據(jù)對(duì)應(yīng)一個(gè)Byte,16KHz采樣,1秒種占用存儲(chǔ)空間就是16K Byte,F(xiàn)429有2M Byte的Flash存儲(chǔ)空間,理論上可以存儲(chǔ)2048K/16K = 128秒的音頻。

下面是用NucleoF429實(shí)現(xiàn)音頻播放的具體過(guò)程:

一、配置PWM

1、用STM32CubeMx建立工程,配置兩個(gè)定時(shí)器TIM1和TIM2,TIM用于PWM產(chǎn)生,TIM2用于16KHz數(shù)據(jù)更新。

075e031e-a4ba-11eb-aece-12bb97331649.png

TIM1選擇PWM互補(bǔ)輸出(單通道也可以),將PE8和PE9復(fù)用為PWMN和PWMP。

TIM1在APB2總線上,TIM2在APB1總線上

077024ae-a4ba-11eb-aece-12bb97331649.png

所以TIM1和TIM2的時(shí)鐘頻率分別為180M和90M,系統(tǒng)時(shí)鐘用HSE輸入的8MHz。

079da032-a4ba-11eb-aece-12bb97331649.png

將TIM1設(shè)置為32KHz,即31.25us。8Bit占空比,一個(gè)LSB為31.25us / 256 = 0.1220703125us = 8.192MHz,TIM1 180M / 8.192M = 21.97265625,這里取整數(shù)22。所以實(shí)際的PWM頻率為1/(180 / 22) *256 = 31.289us = 31.96KHz

07ab63ca-a4ba-11eb-aece-12bb97331649.png

TIM2 為90MHz,45分頻后為2MHz即0.5us,周期125即62.5us = 16KHz。

07b6ede4-a4ba-11eb-aece-12bb97331649.png

NVIC開(kāi)啟TIM2中斷。生成工程名和目錄后生成Keil工程。

二、播放語(yǔ)音

1、先編譯后,編寫(xiě)TIM中斷服務(wù)程序。

07e540f4-a4ba-11eb-aece-12bb97331649.png

完成后,開(kāi)啟TIM2中斷和PWM,(PWM是互補(bǔ)輸出,需要單獨(dú)開(kāi)啟各個(gè)通道)

07eda870-a4ba-11eb-aece-12bb97331649.png

用邏輯分析儀測(cè)量輸出波形。

07f7c562-a4ba-11eb-aece-12bb97331649.png

如圖所示,TIM1 PWM為31.96KHz,TIM2為62.5us即16KHz,結(jié)果正確。

接下來(lái)處理音頻:

這里使用的音頻是PCM格式,是未進(jìn)行壓縮編碼的原始數(shù)據(jù),可以直接給PWM輸出。

音頻處理的軟件有許多,只要能把格式轉(zhuǎn)為PCM即可,下面是我用Cool Edit這款軟件做的音頻格式轉(zhuǎn)換。

選擇菜單 文件--》批量轉(zhuǎn)換

08141cda-a4ba-11eb-aece-12bb97331649.png

選擇新的采樣率和采樣位數(shù)。

08202f02-a4ba-11eb-aece-12bb97331649.png

選擇PCM格式。設(shè)置輸出目錄后運(yùn)行批處理完成轉(zhuǎn)換。

08299272-a4ba-11eb-aece-12bb97331649.png

完成后的音頻文件用WinHeX這個(gè)軟件打開(kāi)。

08331a22-a4ba-11eb-aece-12bb97331649.png

圖中紅框中的44個(gè)Byte為PCM格式的文件頭信息,后面的的數(shù)據(jù)為音頻數(shù)據(jù),數(shù)據(jù)全選后利用WinHex的可選格式復(fù)制

0862504e-a4ba-11eb-aece-12bb97331649.png

將數(shù)據(jù)以C數(shù)組的形式導(dǎo)出,在工程目錄下新建.h文件,將復(fù)制的文件粘帖到.H文件并在工程中Include進(jìn)來(lái),定義起始和結(jié)束地址,數(shù)組的大小即為文件結(jié)束地址,數(shù)組用const修飾,可以將數(shù)據(jù)存儲(chǔ)到Flash中。

086db466-a4ba-11eb-aece-12bb97331649.png

在TIM2中,以16KHz的速度更新PWM數(shù)據(jù)即可實(shí)現(xiàn)音頻播放。

0876158e-a4ba-11eb-aece-12bb97331649.png

編譯工程,下載到NucleoF429板子上,在PE8或PE9上接一個(gè)喇叭即可聽(tīng)到聲音。

以上用的音頻采樣是16K 8Bit,要想提高音質(zhì),提高采樣和Bit數(shù)即可,音量可以用外接三極管或功放放大,音頻數(shù)據(jù)也可以用ADC采集后存儲(chǔ)到SPI Flash后播放,實(shí)現(xiàn)錄音回放。

編輯:lyn

聲明:本文內(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)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5057

    瀏覽量

    212178
  • 語(yǔ)音播報(bào)
    +關(guān)注

    關(guān)注

    1

    文章

    25

    瀏覽量

    14435

原文標(biāo)題:使用PWM實(shí)現(xiàn)語(yǔ)音播放

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    NVG040W語(yǔ)音播放芯片智能引導(dǎo),讓治療儀/熱療機(jī)使用更便捷

    ,讓治療儀和熱療機(jī)的使用更加便捷。?NVG040W語(yǔ)音芯片是一種OTP語(yǔ)音芯片,?具有SOP8封裝和8腳設(shè)計(jì),?通過(guò)PWM放音方式實(shí)現(xiàn)高保真、?高識(shí)別率的
    的頭像 發(fā)表于 08-14 08:07 ?101次閱讀
    NVG040W<b class='flag-5'>語(yǔ)音</b><b class='flag-5'>播放</b>芯片智能引導(dǎo),讓治療儀/熱療機(jī)使用更便捷

    PWM技術(shù)如何實(shí)現(xiàn)電機(jī)的平滑啟動(dòng)和停止

    PWM(脈沖寬度調(diào)制)技術(shù)在電機(jī)控制中實(shí)現(xiàn)平滑啟動(dòng)和停止的功能,主要通過(guò)精確調(diào)節(jié)電機(jī)輸入電壓或電流的波形來(lái)實(shí)現(xiàn)。這種技術(shù)能夠顯著減少電機(jī)在啟動(dòng)和停止過(guò)程中的機(jī)械沖擊和振動(dòng),從而延長(zhǎng)電機(jī)
    的頭像 發(fā)表于 08-12 17:53 ?441次閱讀

    PWM控制電機(jī)轉(zhuǎn)速的原理與實(shí)現(xiàn)

    PWM(脈寬調(diào)制)是一種廣泛應(yīng)用于電機(jī)控制領(lǐng)域的調(diào)制技術(shù)。它通過(guò)調(diào)節(jié)脈沖信號(hào)的占空比,實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)速的精確控制。PWM控制電機(jī)轉(zhuǎn)速的方法因其高效、穩(wěn)定、易于實(shí)現(xiàn)等優(yōu)點(diǎn),在現(xiàn)代工業(yè)、家電
    的頭像 發(fā)表于 06-03 17:23 ?4139次閱讀

    能不能把單片機(jī)上的蜂鳴器換成語(yǔ)音播放模塊

    我的畢設(shè)選題是基于單片機(jī)的智能語(yǔ)音門(mén)禁系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),所以我在網(wǎng)上買(mǎi)了個(gè)智能門(mén)鎖的板子,但是它沒(méi)有語(yǔ)音播放,我就想著能不能把蜂鳴器換成語(yǔ)音
    發(fā)表于 03-26 10:26

    芯知識(shí) | 什么是音頻藍(lán)牙播放語(yǔ)音芯片?

    隨著科技的不斷進(jìn)步,音頻藍(lán)牙播放語(yǔ)音芯片成為嵌入式音頻系統(tǒng)中備受關(guān)注的創(chuàng)新解決方案。本文將深入解析什么是音頻藍(lán)牙播放語(yǔ)音芯片,以及其在實(shí)現(xiàn)無(wú)
    的頭像 發(fā)表于 12-15 08:36 ?618次閱讀
    芯知識(shí) | 什么是音頻藍(lán)牙<b class='flag-5'>播放</b><b class='flag-5'>語(yǔ)音</b>芯片?

    WT588F02B-8S語(yǔ)音芯片:靈活應(yīng)用的語(yǔ)音播放利器,實(shí)現(xiàn)多重優(yōu)勢(shì)

    在智能語(yǔ)音交互領(lǐng)域,WT588F02B-8S可重復(fù)擦寫(xiě)(Flash型)語(yǔ)音芯片聲音播放提示IC憑借其出色的特性,為用戶(hù)提供了更靈活、高效的語(yǔ)音解決方案。本文將聚焦于該芯片的應(yīng)用優(yōu)勢(shì),包
    的頭像 發(fā)表于 12-14 10:11 ?345次閱讀
    WT588F02B-8S<b class='flag-5'>語(yǔ)音</b>芯片:靈活應(yīng)用的<b class='flag-5'>語(yǔ)音</b><b class='flag-5'>播放</b>利器,<b class='flag-5'>實(shí)現(xiàn)</b>多重優(yōu)勢(shì)

    WTR096語(yǔ)音播放語(yǔ)音芯片IC:創(chuàng)新應(yīng)用于電池電量檢測(cè)與AD按鍵擴(kuò)展

    隨著智能科技的蓬勃發(fā)展,語(yǔ)音芯片在各種應(yīng)用場(chǎng)景中發(fā)揮著越來(lái)越重要的作用。WTR096語(yǔ)音播放語(yǔ)音芯片IC以其強(qiáng)大的性能和多功能特性,特別是支持8路AD采集,為電池電量檢測(cè)、AD按鍵擴(kuò)展
    的頭像 發(fā)表于 12-06 09:22 ?382次閱讀
    WTR096<b class='flag-5'>語(yǔ)音</b><b class='flag-5'>播放</b><b class='flag-5'>語(yǔ)音</b>芯片IC:創(chuàng)新應(yīng)用于電池電量檢測(cè)與AD按鍵擴(kuò)展

    WT2605C語(yǔ)音芯片:實(shí)現(xiàn)藍(lán)牙音頻播放與BLE透?jìng)?,引領(lǐng)智能設(shè)備應(yīng)用新潮流

    隨著藍(lán)牙技術(shù)的快速發(fā)展,藍(lán)牙音頻播放和BLE(藍(lán)牙低功耗)透?jìng)饕殉蔀橹悄茉O(shè)備中不可或缺的功能。在這樣的背景下,WT2605C語(yǔ)音芯片以其出色的性能和集成度,完美實(shí)現(xiàn)了藍(lán)牙音頻播放+BL
    的頭像 發(fā)表于 12-05 08:49 ?521次閱讀
    WT2605C<b class='flag-5'>語(yǔ)音</b>芯片:<b class='flag-5'>實(shí)現(xiàn)</b>藍(lán)牙音頻<b class='flag-5'>播放</b>與BLE透?jìng)鳎I(lǐng)智能設(shè)備應(yīng)用新潮流

    唯創(chuàng)知音有哪些語(yǔ)音芯片支持白噪音播放功能?以及應(yīng)用領(lǐng)域介紹

    唯創(chuàng)知音作為專(zhuān)業(yè)的語(yǔ)音芯片提供商,一直致力于為消費(fèi)者提供多樣化且高質(zhì)量的語(yǔ)音芯片產(chǎn)品。在白噪音播放功能方面,唯創(chuàng)知音擁有多款具備此功能的語(yǔ)音芯片,滿足了市場(chǎng)對(duì)于白噪音
    的頭像 發(fā)表于 12-04 09:11 ?443次閱讀
    唯創(chuàng)知音有哪些<b class='flag-5'>語(yǔ)音</b>芯片支持白噪音<b class='flag-5'>播放</b>功能?以及應(yīng)用領(lǐng)域介紹

    WT2605C語(yǔ)音芯片MP3音頻IC:輕松實(shí)現(xiàn)指令隨機(jī)播放與無(wú)縫循環(huán)播放等功能

    這一需求而誕生的,它具備指令隨機(jī)播放、無(wú)縫循環(huán)播放等強(qiáng)大功能,為各類(lèi)產(chǎn)品增添了豐富的聲音色彩。首先,WT2605C語(yǔ)音芯片支持指令隨機(jī)播放功能。這意味著設(shè)計(jì)師可以預(yù)
    的頭像 發(fā)表于 12-02 09:53 ?453次閱讀
    WT2605C<b class='flag-5'>語(yǔ)音</b>芯片MP3音頻IC:輕松<b class='flag-5'>實(shí)現(xiàn)</b>指令隨機(jī)<b class='flag-5'>播放</b>與無(wú)縫循環(huán)<b class='flag-5'>播放</b>等功能

    可錄音語(yǔ)音芯片IC的工作原理及應(yīng)用場(chǎng)景介紹

    錄音播放語(yǔ)音芯片是一種具有錄音和播放功能的集成芯片,廣泛應(yīng)用于各種電子產(chǎn)品和設(shè)備中。本文將詳細(xì)介紹錄音播放
    的頭像 發(fā)表于 11-23 14:36 ?763次閱讀
    可錄音<b class='flag-5'>語(yǔ)音</b>芯片IC的工作原理及應(yīng)用場(chǎng)景介紹

    arduino能用pwm播放音樂(lè)嗎?

    arduino能用pwm播放音樂(lè)嗎,歌曲通過(guò)外部的flash存儲(chǔ)
    發(fā)表于 11-08 08:19

    如何使用51單片機(jī)播放語(yǔ)音文件?

    如何使用51單片機(jī)播放語(yǔ)音文件。出了揚(yáng)聲器,功率放大器,還需要什么硬件嗎
    發(fā)表于 10-31 06:53

    KT148A語(yǔ)音芯片的組合播放詳細(xì)說(shuō)明 包含語(yǔ)音制作 壓縮 下載 播放

    KT148A語(yǔ)音芯片的組合播放詳細(xì)說(shuō)明 ,包含:語(yǔ)音制作 、壓縮、下載、播放 這里總共的步驟大概分為5步,其實(shí)也很簡(jiǎn)單 組合
    的頭像 發(fā)表于 10-13 11:17 ?671次閱讀
    KT148A<b class='flag-5'>語(yǔ)音</b>芯片的組合<b class='flag-5'>播放</b><b class='flag-5'>詳細(xì)</b>說(shuō)明 包含<b class='flag-5'>語(yǔ)音</b>制作 壓縮 下載 <b class='flag-5'>播放</b>

    stm32錄制一段語(yǔ)音到sdram,如何實(shí)現(xiàn)變調(diào)不變速播放?

    stm32錄制一段語(yǔ)音到sdram,然后用什么算法將語(yǔ)音變調(diào)不變速播放,比如升調(diào)播放
    發(fā)表于 09-25 06:40