《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > Chirp聲音文件格式修改

Chirp聲音文件格式修改

2020-03-30
來源:與非網(wǎng)
關(guān)鍵詞: 單片機(jī) Chirp

  提問

  老師,這個(gè)波形為什么抓取出來是這個(gè)樣子?應(yīng)該是連續(xù)的 sin 吧?這個(gè)是從你發(fā)的網(wǎng)盤鏈接里面下載的 我用播放器畫出的波形。

  聲音信號(hào)繪制波形

forward (2).jpg

  聲音聽起來是下面“失真的 Chirp”聲音:

  我自己使用單片機(jī), 發(fā)出的聲音不太一樣,但是波形就是您之前推文里的那個(gè),就像下面的波形圖所顯示的那樣。

  剛才是我自己?jiǎn)纹瑱C(jī)生成的波形 老師發(fā)的 chirp.wav,用 Matplot 沒問題。但是從喇叭里面發(fā)出來,就會(huì)很奇怪,而且播放器上面的波形也不對(duì)。

2.jpg

  自己使用單片機(jī)產(chǎn)生的波形

  問題回復(fù)

  問題分析

  在生成最終的聲音 .wav 文件的時(shí)候,使用的是 16bit 整型數(shù)。在 python 程序中為:

  wavefile.setparams((1, 2, 10000, wavelen, 'NONE', 'Tsinghua'))

  函數(shù)中的參數(shù)定義分別是:(nchannels, sampwidth, framerate, nframes, comptype, compname),

  生成 wave 波形數(shù)據(jù)使用公式如下,這將產(chǎn)生帶有符號(hào)的 16 位整形數(shù)字:

  Chip 波形前面 300 個(gè)數(shù)據(jù)點(diǎn)繪制的波形如下:

3.jpg

  有符合 16 位整型數(shù)波形

  在寫入 wave 文件之前,需要將生成的數(shù)據(jù)轉(zhuǎn)換成無符號(hào)整形數(shù)字,使用二進(jìn)制補(bǔ)碼方式進(jìn)行轉(zhuǎn)換:

  sd = int(sin(angle * 2 * pi) * 0x3fff)

  if sd < 0: sd = 0x10000+sd

  這樣 wave 文件的波形就變成如下圖所示了:

4.jpg

  修改成有符合整型數(shù)的波形

  而在之前沒有按照二進(jìn)制補(bǔ)碼方式轉(zhuǎn)換,而是直接采用 16 位無符號(hào)整形數(shù)來表示音頻數(shù)據(jù),轉(zhuǎn)換的程序代碼如下:

  sd = int(sin(angle * 2 * pi) * 0x3fff) + 0x7fff

  這樣繪制出來的波形如下。雖然它的波形完整,但與 .wav 文件所使用的有符號(hào) 16 位整型數(shù)據(jù)不符合,所以播放出來的聲音出現(xiàn)較大的失真。

5.jpg

  無符號(hào) 16 整型數(shù)波形

  產(chǎn)生聲音文件的 PYTHON 程序

  正確 WAVE 文件格式的 Chirp 聲音文件下載地址:

  鏈接:

  https://pan.baidu.com/s/19qLZbABSISm8q2gA2V6Afw

  提取碼:  wrk2


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。