树莓派智能音箱

制作智能音箱首先理清思路,先实现语音识别,其次语音合成,然后实现交互功能,最后导入树莓派
一、语音识别
首先进行安装插件

; 在进行安装python SDK

代码如下:

二、语音合成
首先注册百度云账号,获取

该步原理,首先进行录音,然后识别,反馈到百度云,然后在接受反馈,调用百度云,完成合成
代码如下:
def record_audio():
录音
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1 # 通道数
RATE = 16000
RECORD_SECONDS = 5 # 录音时间
WAVE_OUTPUT_FILENAME = “record.wav”
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
print(“* recording”)
frames = []
for i in range(0, int(RATE/CHUNK*RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print(“* done recording”)
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, ‘wb’)
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b”.join(frames))
wf.close()
print(“done play”)
if name==” main“:
record_audio()
play_audio()
type_audio()
def get_file_content(filePath):
with open(filePath, ‘rb’) as fp:
return fp.read()
result=client.asr(get_file_content(‘record.wav’), ‘wav’, 16000, {
‘dev_pid’: 1537,
})
print(result[“result”][0])
def get_token():
server = “https://aip.baidubce.com/oauth/2.0/token?”
grant_type = “client_credentials”
client_id = ‘IQisWv4tqQoKg3Ui0YFObmZ6’
client_secret = ‘QpkAvrW6sj2HWqeUKubTP9KFpyC4iGkZ’
url = “%sgrant_type=%s&client_id=%s&client_secret=%s” % (
server, grant_type, client_id, client_secret)
res = requests.post(url)
access_token = json.loads(res.text)[“access_token”]
return access_token
access_token = get_token()
print(access_token)
即为整个代码
; 三、语音交互
首先申请百度云智能机器人,记住机器人ID


然后编写代码,引用机器人
url = ‘https://aip.baidubce.com/rpc/2.0/unit/service/v3/chat?access_token=’ + access_token
post_data = “{“version”:”3.0″,”service_id”:”S70378″,”session_id”:””,”log_id”:”26378884″,”request”:{“terminal_id”:”88888″,”query”:”‘”+result[“result”][0]+”‘”}} “
headers = {‘content-type’: ‘application/x-www-form-urlencoded’}
response = requests.post(url, data=post_data.encode(‘utf-8’), headers=headers)
text1 = json.loads(response.text)
print(text1)
print(text1[‘result’][‘responses’][0][‘actions’][0][‘say’])
rs= client.synthesis(text1[‘result’][‘responses’][0][‘actions’][0][‘say’], ‘zh’, 1, {‘vol’: 5,’per’:0
})
识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(rs, dict):
with open(‘record.mp3’, ‘wb’) as f:
f.write(rs)
import mp3play
clip =mp3play.load(“record.mp3”)
clip.play()
duration = clip.milliseconds()
import time
time.sleep(duration)
clip.stop()
print(rs)
print(rs)
其中ID是你自己的机器人代号
最后导入树莓派
将树莓派连上喇叭,麦克风,即可完成树莓派智能音箱的制作
(写的不好,见谅)
Original: https://blog.csdn.net/asdrjll/article/details/125256458
Author: isisss
Title: 树莓派智能音箱
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/515962/
转载文章受原作者版权保护。转载请注明原作者出处!