安装库

安装 ALSA 的录音应用软件



sudo apt-get -y  install  alsa-utils   pulseaudio


  

 

​lsusb​​命令查看一下USB设备:

树莓派录音和播放声音_百度

 

 



(2)通过[sudo apt-get update]进行源更新。(无外网时可以跳过,如果后面命令执行时出现问题,请返回此步并执行此步和(3)步)

(3)通过[sudo apt-get upgrade]进行包更新。(无外网时可以跳过)

(4)通过[sudo modprobe snd_bcm2835]载入声卡驱动。

(5)通过[arecord -d 10 -D plughw:1,0 test.wav]进行录音测试。(默认保存在/home/test.wav)(命令说明:arecord -d 录制时间(s)-D 设备 名称)


  

 


USB声卡的使用

 

​arecord -l​​可以列出所有录音设备

树莓派录音和播放声音_json_02

树莓派录音和播放声音_.net_03

 

 

 

直接执行Linux自带的录音命令,录制一段5秒的声音进行测试



arecord -D "plughw:1,0" -f S16_LE -r 16000 -d 5 -t wav test.wav


  

 其中 ​​hw:1,0​​ 表示​​card 1 , device 0​​,即我们的USB声卡,arecord 其他的参数如下:

树莓派录音和播放声音_json_04

 

 

 

如果声音过小,输入命令 ​​alsamixer​​,来对音量进行调整,按下​​F6​​,选择USB声卡,



alsamixer


  

树莓派录音和播放声音_.net_05

 

 

 选择F6

树莓派录音和播放声音_树莓派_06

 

 

 

树莓派录音和播放声音_输出模式_07

 

 

 然后按下​​F5​​,将录音和播音设备都展示出来,因为我的USB声卡只支持录音,所以播音的音量无法调整,我们将录音的音量按上键调高

 

树莓派录音和播放声音_输出模式_08

 注意这个声音最好调成0,不然会有严重的电流刺啦声音

 

 然后使用​​aplay​​命令来播放,也可以双击使用树莓派自带的媒体软件播放。



aplay -D "plughw:0,0" test.wav


 如果录音有问题,可能是缺少一些录音软件



sudo apt-get install  alsa-utils ulseaudio


 

语音播放

树莓派支持 3.5mm 接口音频输出和 HDMI 音频输出,可以通过 config 界面来进行配置

如下图所示,输入



sudo raspi-config


  声音输出模式配置

(1)选择进入第 7 项 - Advanced Options

(2)选择 Audio,单击回车

树莓派录音和播放声音_树莓派_09

 

 树莓派录音和播放声音_输出模式_10

 

 配置声音输出模式

0 - 自动选择

1 - 3.5mm 音频接口输出

2 - HDMI 输出,这种方式一般是在显示器有喇叭的情况下,使用显示器自带的喇叭播放音频

选择播放模式后,使用 TAB 键切换到 OK,然后单击回车确认,就完成了音频输出模式配置

退出配置界面后,SSH终端会显示模式配置成功


插上耳机到输出孔,看是否有声音,没有的话,把输出改成3.5mm

 

测试例程



'''
功能:
1录音保存wmv
2上传百度语音识别返回结果
'''
#树莓派4B 使用USB免驱动麦克风保存录音
import json
import subprocess

vioce_path="voice.wav"

def getvoice(vioce_path):
print('开始语音输入,5秒内说出目标点 红色 绿色 蓝色,之后保持安静!')
#arecord -l可以列出所有录音设备 查看板卡号和驱动号
#vioce_path="voice.wav"
Audio_drivce="plughw:2,0"#USB面驱动麦克风 板卡2 驱动0
vioce_time="5" #录制5秒语音
msg="arecord -D "+Audio_drivce+" -f S16_LE -r 16000 -d "+vioce_time+" -t wav "+vioce_path
result=subprocess.call(msg, shell=True)#执行 同级目录保存文件
#print("录音结束")

#getvoice()


from aip import AipSpeech


def usevoice(vioce_path):
print('开始语音识别,请等待。。。')

""" 修改成你的百度 APPID AK SK """


APP_ID = '23159731'
API_KEY = 'DIQ9g1OKcI4dIyU0xeFoTyK3'
SECRET_KEY = 'P9zittbiFGpkmGsMMqGd74tbyG3bcOhp'


client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# 读取文件
def get_file_content(file_path):
with open(file_path, 'rb') as fp:
return fp.read()

vioce_file=get_file_content(vioce_path)


'''
1536 普通话(支持简单的英文识别) 无标点
1537 普通话(纯中文识别) 有标点
1737 英语 有标点
'''
# 识别本地文件
Recresult = client.asr(vioce_file, 'wav', 16000, {
'dev_pid': 1537, # 默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格
})

jsonRec=json.loads(json.dumps(Recresult))


#print(jsonRec)
#for i in jsonRec:
# print(i)
VoiceRuselt=jsonRec["result"][0]
print("识别结果为: "+VoiceRuselt)


if VoiceRuselt=="红色。": #返回结果默认加了句号
print('到达红色区域停止')
return "red"
elif VoiceRuselt=="蓝色。":
print('到达蓝色区域停止')
return "blue"
elif VoiceRuselt=="绿色。":
print('到达绿色区域停止')
return "green"
else:
print('没有匹配结果,请重新识别')
return "black"
'''
#1录音 5秒
getvoice(vioce_path)
#2对录音结果识别 vioceresult保存结果
vioceresult=usevoice(vioce_path)
print(vioceresult)
'''


  

 

 

三、PyAudio安装即配置

如果需要使用python程序控制录音

安装



pip install pyaudio
pip install tqdm


  



sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 pulseaudio
sudo apt-get install libatlas-base-dev alsa-utils alsa-tools alsa-tools-gui alsamixergui -y