樹莓派的應用十分廣泛,有很多奇思妙想的應用非常有趣,在這里我們想實現一個小電台的功能,但是在這里需要說明,私人架設電台是違法行為,所以本案只作為自我娛樂所用,不能發射大功率的信號干擾正常的FM頻段。
這里需要用到一個開源的小軟件PiFmRds" target="_blank">PiFmRds,這個小軟件最早是由兩位外國朋友Oliver Mattos and Oskar Weigl 開發的,后來,Richard Hirst把這個小軟件改成由DMA實現,減少了CPU資源的占用。再后來Christophe Jacquet繼續修改軟件,添加了RDS數據生成器和調制器,發射器使用Raspberry Pi的PWM發生器產生VHF信號,該軟件與Raspberry Pi 1、2和3都兼容。
該小軟件依賴sndfile庫,首先安裝該庫:
-
sudo apt-get install libsndfile1-dev
接下來克隆小軟件的源碼:
然后進行編譯:
-
cd PiFmRds/src
-
make clean
-
make
編譯完成后,輸入以下命令運行程序
-
sudo ./pi_fm_rds
此時就會在樹莓派的GPIO 4 (40針P1接口的第7管腳)上產生FM發射波,默認頻率107.9,這個輻射范圍通常在100厘米左右,增加20cm的杜邦線,可以使得發射范圍增加到100米。
在pi_fm_rds源碼目錄中有五個wav聲音文件作為示例,可以執行如下命令播放音頻。
-
sudo ./pi_fm_rds -audio sound.wav -freq 100.6
此時就可以聽到一段英文發音,這個時間非常短,只有4秒鍾左右,重復執行就可以多次聽到了。
pi_fm_rds更多的應用語法如下:
pi_fm_rds [-freq freq] [-audio file] [-ppm ppm_error] [-pi pi_code] [-ps ps_text] [-rt rt_text]
所有參數都是可選的:
- -freq指定載波頻率(以MHz為單位)。例如:-freq 100.6。
- -audio指定一個音頻文件作為音頻播放。如果提供立體聲文件,則Pi-FM-RDS將產生FM立體聲信號。例如:-audio sound.wav。支持的格式取決於libsndfile。這包括WAV和Ogg / Vorbis(等),但不包括MP3。
- -pi指定RDS廣播的PI代碼。4個十六進制數字。例如:-pi FFFF。
- -ps指定RDS廣播的電台名稱(節目服務名稱,PS)。限制:8個字符。例如:-ps RASP-PI。
- -rt指定要傳輸的無線文本(RT)。限制:64個字符。例如:-rt 'Hello, world!'。
- -ctl 指定一個命名管道(FIFO)作為控制通道在運行時改變PS和RT。
- -ppm 以百萬分率(ppm)為單位指定樹莓派的振盪器誤差。
如果使用參數-audio -,注意,-audio 后面是一個短橫線,Pi-FM-RDS將讀取標准輸入上的音頻數據,這允許您將程序的輸出傳送到Pi-FM-RDS。他有什么作用呢,這就為我們播放MP3預留了接口,例如,這可以用於使用Sox讀取MP3文件:
-
sox -t mp3 Music.mp3 -t wav - | sudo ./pi_fm_rds -audio -
這個操作的意思是使用sox工具讀取Music.mp3,轉換成wav格式並輸出到標准輸出,同時使用pi_fm_rds來播放(發射)標准輸入中的文件(流)。
或者將聲卡的AUX輸入傳送到Pi-FM-RDS:
-
sudo arecord -fS16_LE -r 44100 -c 2 - | sudo ./pi_fm_rds -audio -
- 超級容易卡死很用CPU
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://www.jianshu.com/p/9fb24dc60f29
轉載於:https://jingyan.eeboard.com/article/76354#/prettyPhoto%5Bpp_gal%5D/0/