今天給大伙們帶來一款開發(fā)板,名字叫STM32F746DISCO,是云漢社區(qū)送給我評測的,我用它做了個音頻信號分析器。
其實(shí),我在云漢還有另一個昵稱,叫做MC老徐,就是業(yè)余時間喜歡玩點(diǎn)freestyle,比如瞎彈或者瞎唱個調(diào)調(diào)。
當(dāng)然,這些調(diào)調(diào)都是我現(xiàn)場即興瞎編的。比如這個螢火蟲板子的這個測試http://www.ickey.cc/e/video/detail/107.html
你會發(fā)現(xiàn)2分40秒時候,背景音樂竟然從《千本櫻》變成了《極樂凈土》,然后4分00秒又變成了《aLIEz》
我老婆說我唱歌雖然習(xí)慣性跑調(diào),但是嗓音很有磁性。
我覺得老婆說得對。。。。。
但是“磁性”這個詞語太玄幻,我們應(yīng)該用一個更準(zhǔn)確的標(biāo)準(zhǔn)來定義這個“磁性”。我覺得我這種特殊的嗓音是來自喉腔管道引入的高次諧波失真。
“高次諧波失真”這個詞可能太嚴(yán)肅了,在音樂界,這種由音腔引起的諧波失真還有個更美妙的名字,叫做泛音。比如我們夸某某樂器的聲音好聽,常會夸它泛音豐富。
當(dāng)然,我不能這么恬不知恥地,平白無故地自己夸自己“泛音豐富”。
作為一個有節(jié)操有底線的物理博士,我需要用科學(xué)方法來自證清白。
為了證明自己嗓音真的是“泛音豐富”,我記錄了自己用“啊”音唱小字一組C音(約260赫茲)時候的數(shù)據(jù),然后用快速傅里葉算法分析了頻譜。
這里非常感謝數(shù)學(xué)家和物理學(xué)家傅里葉為我們提供的好工具。
我終于把信號分析器做出來了。結(jié)果表明,我的泛音確實(shí)很豐富。除了基頻260赫茲附近的根音,泛音一直延伸到了一千赫茲以上。
程序代碼是這樣的。
先定義(快速傅里葉變換)FFT時候需要用到的參數(shù)。
然后定義繪圖坐標(biāo)軸的位置和顏色
接著繪制按鈕
麥克風(fēng)收到的音頻信號存入sn數(shù)組變量
把sn數(shù)組畫一下,這個是波形圖
最后做快速傅里葉變換,從時域空間轉(zhuǎn)換為頻域空間,并畫個頻譜圖。
接著,我把程序編譯出一個bin文件,并燒寫到了板子上。
為了驗(yàn)證這個項(xiàng)目在各頻段下的穩(wěn)定性,我們要找個音準(zhǔn)好一點(diǎn)的設(shè)備來做測試音源。
我們打開Adobe公司的專業(yè)音頻處理軟件Audition,先新建一段空音軌。
然后填充標(biāo)準(zhǔn)440Hz正弦波,這個是模擬小字一組的A音。這個A音正是《小星星》開頭的那個“索索嘟嘟啦啦嗦”里的那個“嘟”音,唱歌時候經(jīng)常會用到的。
然后讓電腦的揚(yáng)聲器播放這段聲音。板子的麥克捕獲這段聲音并做FFT。
我們看看分析結(jié)果??梢詮膱D里發(fā)現(xiàn)440Hz那兒功率比較大。
然后,我們再生成一段1千赫茲正弦波的聲音。
同樣地,揚(yáng)聲器播放這個聲音。板子的麥克風(fēng)捕獲,并做FFT。下圖中的數(shù)據(jù)非常漂亮。
我們再試試更高的頻率。生成一段3千赫茲的正弦波形。
同樣的套路,電腦揚(yáng)聲器播放,然后板子采集并FFT。
分析結(jié)果仍然非常漂亮。很準(zhǔn)確地捕獲到3千赫茲那個信號。
如果聲音更復(fù)雜一些呢,比如來個和弦。
我們以1千赫茲作為根音,做個復(fù)雜的和弦。
這次要發(fā)出來的聲音復(fù)雜了。信號的波形圖和頻譜圖是這樣的。
揚(yáng)聲器發(fā)聲。然后,板子麥克風(fēng)采集并做FFT。下圖是數(shù)據(jù)分析結(jié)果,很準(zhǔn),完全符合預(yù)期。
以上測試可以驗(yàn)證我們這個音頻信號分析器的性能是正常的。
另外,我那個被測出來嗓音“泛音豐富”的結(jié)果,也真實(shí)有效。
評論