樹莓派的應用十分普遍,有不少奇思妙想的應用很是有趣,在這裏咱們想實現一個小電臺的功能,可是在這裏須要說明,私人架設電臺是違法行爲,因此本案只做爲自我娛樂所用,不能發射大功率的信號干擾正常的FM頻段。php
這裏須要用到一個開源的小軟件PiFmRds" target="_blank">PiFmRds,這個小軟件最先是由兩位外國朋友Oliver Mattos and Oskar Weigl 開發的,後來,Richard Hirst把這個小軟件改爲由DMA實現,減小了CPU資源的佔用。再後來Christophe Jacquet繼續修改軟件,添加了RDS數據生成器和調製器,發射器使用Raspberry Pi的PWM發生器產生VHF信號,該軟件與Raspberry Pi 一、2和3都兼容。css
該小軟件依賴sndfile庫,首先安裝該庫:git
接下來克隆小軟件的源碼:github
而後進行編譯:bash
編譯完成後,輸入如下命令運行程序工具
此時就會在樹莓派的GPIO 4 (40針P1接口的第7管腳)上產生FM發射波,默認頻率107.9,這個輻射範圍一般在100釐米左右,增長20cm的杜邦線,可使得發射範圍增長到100米。spa
在pi_fm_rds源碼目錄中有五個wav聲音文件做爲示例,能夠執行以下命令播放音頻。code
此時就能夠聽到一段英文發音,這個時間很是短,只有4秒鐘左右,重複執行就能夠屢次聽到了。接口
pi_fm_rds更多的應用語法以下:資源
pi_fm_rds [-freq freq] [-audio file] [-ppm ppm_error] [-pi pi_code] [-ps ps_text] [-rt rt_text]
全部參數都是可選的:
若是使用參數-audio -,注意,-audio 後面是一個短橫線,Pi-FM-RDS將讀取標準輸入上的音頻數據,這容許您將程序的輸出傳送到Pi-FM-RDS。他有什麼做用呢,這就爲咱們播放MP3預留了接口,例如,這能夠用於使用Sox讀取MP3文件:
這個操做的意思是使用sox工具讀取Music.mp3,轉換成wav格式並輸出到標準輸出,同時使用pi_fm_rds來播放(發射)標準輸入中的文件(流)。
或者將聲卡的AUX輸入傳送到Pi-FM-RDS:
CPU使用狀況以下:
添加音頻時,CPU使用率顯著增長,由於程序必須將輸入音頻文件的採樣率採樣到228 kHz,即其內部操做採樣率,這一動做仍是很是消耗CPU資源的。
經過以上操做,一個小小的私人電臺就搭建好了,可是在此重申,搭建私人電臺是違法行爲,本身短期,小範圍的玩玩能夠,不要干擾了正常的FM頻段,不然後果很嚴重。
man sox
rec -c1 -r16000 xxx.wav
能夠錄製音頻 c指的是聲道數 r值得是採樣率
play xxx.wav
播放
sox -V xxx.wav -n
查看wav文件的詳細參數
example:16k的音頻降採樣到8k
sox -r 16000 input.wav -r 8000 output.wav
多個單通道合併爲多通道: sox 1.wav 2.wav 3.wav -t wavpcm -M 4.wav # 4.wav
是3通道的
多個單通道融合爲單通道: sox 1.wav 2.wav 3.wav -t wavpcm -m 4.wav # 4.wav
是單通道的
sox input.wav -c1 output.wav mixer -l
mp3轉wav
①安裝sox:
sudo apt-get install lame sudo apt-get install sox sudo apt-get install libsox-fmt-mp3
②轉換方法
mp3/wav等等格式轉換成ogg格式:
打開終端,輸入: sox 1.mp3 1.ogg
wav轉換mp3格式:
打開終端,輸入: sox 1.wav 1.mp3
轉載於:https://jingyan.eeboard.com/article/76354#/prettyPhoto%5Bpp_gal%5D/0/