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

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

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

采用PWM進行播放語音原理,PWM又是如何實現(xiàn)的DAC的

嵌入式IoT ? 來源:嵌入式IoT ? 作者:嵌入式IoT ? 2020-12-08 17:41 ? 次閱讀

1.概述

大多數(shù)微控制器上播放音頻都是采用DAC進行輸出,因為微控制器上都不會去帶CODEC編解碼芯片,但是DAC不是每個芯片都會存在,如果沒有DAC,那又該怎么辦呢?于是PWM就成了一個不錯的選擇。因為一般的微控制器板子都會有PWM,這樣的設(shè)計大大簡化了語音設(shè)計的門檻。其原理就是PWM可以變成一個DAC,然后進行語音信號的輸出,經(jīng)過功率放大器,經(jīng)過喇叭,則可以將數(shù)字信號變成聲音信號正常輸出了。

2.聲音原理

學(xué)過物理知識的都知道,聲音其實是一種波,通過空氣振動等彈性介質(zhì)傳遞到人的耳朵里引起耳膜震動,牽動大腦的聽視覺神經(jīng),經(jīng)過大腦處理后,就會產(chǎn)生聽覺。

人能夠分辨的聲音的頻段為最低20Hz到最高20KHz。中學(xué)物理就學(xué)過,聲音的三特征是:音調(diào)、響度和音色,響度是由聲源振動的幅度決定的,振幅越大,響度越大;音調(diào)的高低和振動的頻率有關(guān),頻率越高,音調(diào)越高;音色不同,波的特征也不同。

既然聲音是一種波形,波則有兩個特征:頻率和振幅。對于單片機來說,表述這兩個概念則需要一定的技巧,頻率是單片機本來就具有的特性,可以通過時鐘產(chǎn)生特定頻率的信號,對于振幅,數(shù)字信號0與1該如何表述呢?可以通過位寬深度來進行表述,比如8位的位寬深度則可以表達的量化數(shù)據(jù)為0-256之間的數(shù)據(jù),對于數(shù)字信號,聲音數(shù)據(jù)也有采樣的位寬,所以這個也可以用單片機描述,DAC則可以用來做這個,結(jié)合定時器產(chǎn)生特定的頻率從而讓機器發(fā)出聲音。

3.DAC產(chǎn)生聲音的原理是什么

要想真正理解DAC是如何工作的,必須首先了解什么是模擬信號,模擬信號是一個不斷變化的電壓,它可以完美的表達不斷變化的聲波。麥克風可以將傳入的聲音轉(zhuǎn)換為代表聲音的模擬電信號,這些電信號通過揚聲器將模擬電信號轉(zhuǎn)換成原始聲音。

那么該如何記錄這些模擬信號呢?很早的時候,人們就想出了將模擬信號存儲為唱片上的凹槽。通過指針的來回移動從而表達出聲音的電模擬信號。隨著時間的推移,將這種凹槽早已變成和數(shù)字信號存儲在了硬盤或者各種磁帶中,而這些0或者1則表示音頻信號的信息。

對于聲音信號,光盤可以存儲每秒為44100次的16位深度量化二進制數(shù)據(jù)(16bit/44kHz)。于是在進行DAC輸出的時候,我們也可同樣采用16位寬的DAC進行采樣,然后以44kHz的頻率將聲音信號轉(zhuǎn)化出來,這對于MCU上去操作DAC并非難事,只需要啟用一個16位寬的DAC和一個定時器即可,定時器用于控制聲音輸出的頻率,如采樣率位44.1KHz,則按照該時鐘頻率輸出即可。

8a36eeb0-3019-11eb-a64d-12bb97331649.png

4.PWM又是如何實現(xiàn)的DAC的

在理解上述原理之后,我們來理解一下PWM,以及PWM是如何進行工作的。

8a722c1e-3019-11eb-a64d-12bb97331649.png

PWM(Pulse Width Modulation)最簡單的理解就是MCU內(nèi)部有個定時器,定時器特定的時間內(nèi)將GPIO的電平翻轉(zhuǎn)一下。對于翻轉(zhuǎn)的時間間隔的比例就是占空比,而持續(xù)這兩個過程則可以算為一個周期。這種是對于數(shù)字信號的描述,我們轉(zhuǎn)變一下思維,從模擬信號的角度去理解pwm。

8a94b478-3019-11eb-a64d-12bb97331649.jpg

則可以看到上面的圖示了,在一個周期內(nèi),其占空比決定了平均電壓值,紅色的線表示平均電壓。對于一個周期內(nèi)的數(shù)據(jù),我們可以進行量化,其量化的方式為首先設(shè)定(0~5v)之間的電壓用(0-256表示),此時就可以有8位分辨率(2^8=256)。由于每個量化點都可以表示一個電壓,而電壓又直接和PWM的一個周期的占空比直接相關(guān),所以可以得到占空比和量化點的關(guān)系。同樣的16位量化數(shù)據(jù)則表現(xiàn)的更為精確。但是如果量化的數(shù)據(jù)越大,則PWM頻率越低(計數(shù)的時間變長),這是PWM的基本權(quán)衡。執(zhí)行的越快,精度就越低。這里比較關(guān)鍵,但需要好好理解,隨著PWM頻率的不斷提升,其占空比的選擇就不再那么隨意了,精度會大大的降低。

5.PWM的頻率與底噪的關(guān)系

音頻設(shè)備有個參數(shù)叫信噪比,是信號與噪聲的比例,模擬信號必然會產(chǎn)生噪聲。越好的設(shè)備信噪比越大,也就是需要非常大的增益才能聽得到底噪。

信噪比(Signal-to-noise ratio,縮寫為 SNR 或 S/N),也稱作信雜比或訊雜比。

通常PWM發(fā)出的聲音無法去除掉這一點,但這些聲音有時候會變得有趣,比如紅白機8bit游戲音樂。

確切的說,如果要提升音質(zhì),那么可以采用16位數(shù)據(jù)。有著如下的公式說明:

SNR(dB)=(BitDepth)*6.02dB+1.76dB)

也就是說,如果要獲得更好的聲音效果,可以有兩種辦法,第一種是降低PWM的頻率,也就是上一章節(jié)解釋的那樣,想要獲得更大的深度,則必須降低PWM的頻率。第二種則是增加PWM的數(shù)量。根據(jù)奈奎斯特采樣定理,PWM的最高頻率至少是聲音最高頻率(20Khz)的兩倍。

上圖描述了采樣頻率和PWM數(shù)量以及位寬深度的關(guān)系。如果增加PWM的數(shù)量,則可以提升采樣的精度,比如在不改變PWM的頻率下可以改變其位寬深度。

6.PWM音樂曲目解析

我曾經(jīng)看到過一篇很有意思的文章,就是講了pwm然后用無源蜂鳴器做個播放器的播放《你笑起來真好看》這個曲目,我覺得很有意思。我的上述分析雖然不是完全的可以結(jié)合上這個原理,但是至少可以幫助理解一下樂理知識。在音樂中,節(jié)奏和節(jié)拍兩者相輔相成,構(gòu)成音樂的骨架。使用PWM直接給無源蜂鳴器供電,當高電平時,無源蜂鳴器響,低電平時不響。然后給定音樂的節(jié)拍讓其響或者不響,則可以演奏出樂曲出來,而人發(fā)出的聲音卻比這個要復(fù)雜許多,高低變化的聲音,聲調(diào)的變化要展示出來,是非常有難度的事情。

7.后續(xù)

本文分析了聲音通過PWM或者DAC產(chǎn)生的一些原理和過程,其中比較關(guān)鍵的是PWM從模擬信號的角度上來看,其占空比的變化也可以變成電壓信號。從而通過類似于DAC的原理,此時加上定時器,按照聲音特定的頻率去播放,則可以輸出聲音了。當然,本文至少從原理上說明這個方案是可行的,更多的細節(jié)和更多的技術(shù)實現(xiàn)還在是要繼續(xù)進行探索,后面會研究多個PWM如何提升聲音信噪比以及帶來的副作用是那些,也會去用MCU的視角去理解更多樂理知識。

責任編輯:PSY

原文標題:PWM實現(xiàn)語音播放原理

文章出處:【微信公眾號:嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    114

    文章

    5057

    瀏覽量

    212176
  • 語音
    +關(guān)注

    關(guān)注

    3

    文章

    381

    瀏覽量

    37858
  • dac
    dac
    +關(guān)注

    關(guān)注

    43

    文章

    2226

    瀏覽量

    190432

原文標題:PWM實現(xiàn)語音播放原理

文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    采用PWM實現(xiàn)電壓輸出DAC電路

    一種基于PWM的電壓輸出DAC電路設(shè)計
    發(fā)表于 04-29 10:05

    如何使用PWM實現(xiàn)語音播放

    如何使用PWM實現(xiàn)語音播放?
    發(fā)表于 02-14 06:59

    CH32V103基礎(chǔ)教程93-PWM播放音樂 (1個TIM)

    函數(shù)介紹關(guān)于TIM,在前面章節(jié)已經(jīng)進行過介紹,在此不再贅述。關(guān)于PWM播放音樂原理,即將PWM模擬變成一個DAC
    發(fā)表于 05-11 16:10

    CH32V103基礎(chǔ)教程-PWM播放音樂(2個TIM)

    。關(guān)于PWM播放音樂原理,即將PWM模擬變成一個DAC進行語音信號的輸出。大概原理就是:通過改變
    發(fā)表于 05-11 16:11

    PWM語音播放器——基于Luminary單片機

    PWM語音播放器——基于Luminary單片機 詳述PWM語音播放器原
    發(fā)表于 04-07 16:50 ?46次下載

    PWM DAC文檔

    PWM DAC文檔,關(guān)于PWM DAC文檔的詳細介紹,PWM DAC文檔的應(yīng)用實例。
    發(fā)表于 05-03 11:44 ?0次下載

    如何采用PWM通過RC低通濾波器來模擬實現(xiàn)DAC功能

    當我們電路需要DAC而單片機并沒有DAC外設(shè)時,則可采用PWM通過RC低通濾波器來模擬實現(xiàn)DAC
    的頭像 發(fā)表于 03-21 15:45 ?1.6w次閱讀
    如何<b class='flag-5'>采用</b><b class='flag-5'>PWM</b>通過RC低通濾波器來模擬<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>DAC</b>功能

    關(guān)于PWM實現(xiàn)語音播放的詳細過程

    以一定的速度采樣(ADC)這些波形進行存儲,就是音頻數(shù)據(jù)了,所以播放就是按原來采樣的速率再用DAC輸出對應(yīng)的數(shù)據(jù)即可。
    的頭像 發(fā)表于 04-25 17:27 ?8033次閱讀
    關(guān)于<b class='flag-5'>PWM</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>語音</b><b class='flag-5'>播放</b>的詳細過程

    使用PWM實現(xiàn)DAC

    使用PWM實現(xiàn)DAC(現(xiàn)代電源技術(shù)基礎(chǔ)pdf)-1 Introduction Many embedded microcontroller applications require
    發(fā)表于 09-17 12:02 ?18次下載
    使用<b class='flag-5'>PWM</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>DAC</b>

    PWM模擬DAC的關(guān)鍵參數(shù)分析

    實現(xiàn)DAC系統(tǒng)的性能的主要因素。仿真發(fā)現(xiàn),濾波器環(huán)節(jié)對于PWM模擬DAC的性能參數(shù)是至關(guān)重要的,在不考慮PWM的位數(shù)限制時,濾波級數(shù)越高
    發(fā)表于 09-17 13:00 ?28次下載
    <b class='flag-5'>PWM</b>模擬<b class='flag-5'>DAC</b>的關(guān)鍵參數(shù)分析

    PWM DAC相關(guān)資料

    PWM DAC相關(guān)資料(ups電源技術(shù)發(fā)展動向)-PWM DAC相關(guān)資料? ? ? ? ? ? ? ? ? ? ? ? ?
    發(fā)表于 09-18 15:45 ?30次下載
    <b class='flag-5'>PWM</b> <b class='flag-5'>DAC</b>相關(guān)資料

    STM的PWMDAC學(xué)習

    STM的PWMDAC學(xué)習
    發(fā)表于 11-23 17:51 ?12次下載
    STM的<b class='flag-5'>PWM</b>與<b class='flag-5'>DAC</b>學(xué)習

    使用PWM實現(xiàn)語音播放

    本文轉(zhuǎn)自ARM中文社區(qū),作者:Xiaoya鏈接:https://community.arm.com/cn/b/blog/posts/nucleof429-2-pwm 事實上大部分MCU都可...
    發(fā)表于 12-14 18:56 ?17次下載
    使用<b class='flag-5'>PWM</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>語音</b><b class='flag-5'>播放</b>

    STM32的PWMDAC練習

    STM32的PWMDAC練習STM32F103輸出一路PWM波形序言源碼實操DAC練習STM32F103輸出一路PWM波形建議
    發(fā)表于 12-16 16:53 ?7次下載
    STM32的<b class='flag-5'>PWM</b>和<b class='flag-5'>DAC</b>練習

    PWM DAC

    PWM DAC硬件## PWM DAC1、PWM DAC原理
    發(fā)表于 12-16 16:56 ?19次下載
    <b class='flag-5'>PWM</b> <b class='flag-5'>DAC</b>