树莓派的应用十分普遍,有不少奇思妙想的应用很是有趣,在这里咱们想实现一个小电台的功能,可是在这里须要说明,私人架设电台是违法行为,因此本案只做为自我娱乐所用,不能发射大功率的信号干扰正常的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/