栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

树莓派智能音箱

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

树莓派智能音箱

树莓派智能音箱

在校大学生,利用树莓派制作智能音箱,分享制作思路与过程

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

一、语音识别

首先进行安装插件

在进行安装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是你自己的机器人代号

最后导入树莓派

将树莓派连上喇叭,麦克风,即可完成树莓派智能音箱的制作
(写的不好,见谅)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号