利用树莓派制作智能音箱

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、语音识别
  • 二、语音合成
    • 1.引入库
    • 2.注册百度云账号,获取AppID和APIKey
    • 3.配置必要的信息(语音交互)
    • 4.合成请求token的url、获取token
    • 5.设置音频的属性,采样率,格式等
    • 6.读取文件二进制内容
    • 7.json封装、设置headers和请求地址url、用post方法传数据
    • 8.录音
    • 9.识别,反馈到百度云,然后在接受反馈,调用百度云。


前言

提示:这里可以添加本文要记录的大概内容:

在校大学生,利用树莓派制作智能音箱,分享制作思路与过程。制作时首先理清思路,先实现语音识别,其次语音合成,然后实现交互功能,最后导入树莓派。


提示:以下是本篇文章正文内容,下面案例可供参考

一、语音识别

1、安装插件
win+r并输入cmd回车
(1)输入pip install pyaudio会出现问题(部分可能不会出问题)
出现问题的样子

(2)解决办法
输入python -m pip install --upgrade pip回车更新python
成功
(3)安装成功后,再在窗口输入pipwin install pyaudio
2、在进行安装python SDK
pip install baidu-aip

二、语音合成

1.引入库

代码如下(示例):

import os
from os import system
import aip
from aip import AipSpeech
import wave
import requests
import json

2.注册百度云账号,获取AppID和APIKey

进行录音,然后识别,反馈到百度云,然后在接受反馈,调用百度云。

3.配置必要的信息(语音交互)

代码如下(示例):

def bat(voice_path):baidu_server = 'https://aip.baidubce.com/oauth/2.0/token?'grant_type = 'client_credentials'client_id = 'FvM3fI7CMaMh9xTQGn22rk8t' #API KEYclient_secret = '43zRlrdf6LPhmGFbMnamEbINqwVepLaF' #Secret KEY  这里可以自己去百度注册,这里是我的API KEY 和 Secret KEY

该处使用的url网络请求的数据。

4.合成请求token的url、获取token

代码如下(示例):

url = baidu_server+'grant_type='+grant_type+'&client_id='+client_id+'&client_secret='+client_secret
res = requests.get(url).textdata = json.loads(res)token = data['access_token']

5.设置音频的属性,采样率,格式等

代码如下(示例):

 VOICE_RATE = 8000FILE_NAME = voice_pathUSER_ID = '26378618' #这里的id随便填填就好啦,我填的自己昵称FILE_TYPE = 'wav'CUID="wate_play"#读取文件二进制内容f_obj = open(FILE_NAME, 'rb')content = base64.b64encode(f_obj.read())  # 百度语音识别需要base64编码格式speech = content.decode("utf-8")size = os.path.getsize(FILE_NAME)

6.读取文件二进制内容

代码如下(示例):

 f_obj = open(FILE_NAME, 'rb')content = base64.b64encode(f_obj.read())  # 百度语音识别需要base64编码格式speech = content.decode("utf-8")size = os.path.getsize(FILE_NAME)

7.json封装、设置headers和请求地址url、用post方法传数据

代码如下(示例):

datas = json.dumps({'format': FILE_TYPE,'rate': VOICE_RATE,'channel': 1,'cuid': CUID,'token': token,'speech': speech,'len': size,"dev_pid":"1536"})return datasdef post(datas):headers = {'Content-Type':'application/json'}url = 'https://vop.baidu.com/server_api'# url = "http://vop.baidu.com/server_api"request = requests.post(url, datas, headers)result = json.loads(request.text)text = result.get("result")if result['err_no'] == 0:return textelse:return "Error"

8.录音

代码如下(示例):

def get_audio(filepath):input("回车开始录音 >>>")   #输出提示文本,input接收一个值,转为str,赋值给aaCHUNK = 256         #定义数据流块FORMAT = pyaudio.paInt16  #量化位数(音量级划分)CHANNELS = 1        # 声道数;声道数:可以是单声道或者是双声道RATE = 8000        # 采样率;采样率:一秒内对声音信号的采集次数,常用的有8kHz, 16kHz, 32kHz, 48kHz, 11.025kHz, 22.05kHz, 44.1kHzRECORD_SECONDS = 5     #录音秒数WAVE_OUTPUT_FILENAME = filepath   #wav文件路径p = pyaudio.PyAudio()        #实例化stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)print("*"*10, "开始录音:请在5秒内输入语音")frames = []                         #定义一个列表for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):   #循环,采样率11025 / 256 * 5data = stream.read(CHUNK)                #读取chunk个字节 保存到data中frames.append(data)                   #向列表frames中添加数据data# print(frames)print("*" * 10, "录音结束\n")stream.stop_stream()stream.close()     #关闭p.terminate()      #终结wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')         #打开wav文件创建一个音频对象wf,开始写WAV文件wf.setnchannels(CHANNELS)                  #配置声道数wf.setsampwidth(p.get_sample_size(FORMAT))         #配置量化位数wf.setframerate(RATE)                    #配置采样率wf.writeframes(b''.join(frames))              #转换为二进制数据写入文件wf.close()       #关闭returndef check_disk():list_drive = psutil.disk_partitions() # 找出本地磁盘列表,保存的是结构体对象list_disk = []for drive in list_drive:list_disk.append(drive.device)return list_diskif __name__ == '__main__':list_disk = check_disk() # 检索本地磁盘dirname_path = os.path.join(list_disk[0], "voice") # 设置语音文件存放路径, if not os.path.exists(dirname_path):os.makedirs(dirname_path)filename = "voice.wav" # 定义语音文件名in_path = os.path.join(dirname_path, filename)get_audio(in_path) # 录音datas = bat(in_path) # 封装百度语音识别需要的配置信息,返回请求头res = post(datas) # 连接百度语音识别接口,得到识别结果print("识别结果:",res[0])

9.识别,反馈到百度云,然后在接受反馈,调用百度云。

代码如下(示例):

from aip import AipSpeech""" 你的 APPID AK SK """
APP_ID = '26341318'
API_KEY = '8rFjwa3GDfzEq0q22cvVrLGG'
SECRET_KEY = 'E4Ye4GVY6khGsTLGbaTvfDEc8L1FQbSs'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result  = client.synthesis(res[0], 'zh', 1, {'vol': 5,
})# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):with open('audio.mp3', 'wb') as f:f.write(result)

最后导入树莓派
然后将树莓派连上喇叭,麦克风,即完成了树莓派智能音箱的制作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13370.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT:关于WebRTC的未来,你怎么看?

了解音视频技术大会更多信息 编者按:ChatGPT可能在几天内成为某个领域的专家,不信?看看他对WebRTC的解读。感谢刘连响对本文的审校。 原文链接:https://webrtc.ventures/2023/01/the-future-of-webrtc-according-to-chatgpt/ 作者…

当 MQTT 遇上 ChatGPT:探索可自然交互的物联网智能应用

本文作者 Shifan Yu:EMQX 前端研发总监,负责 EMQX 的前端开发工作,同时也是 MQTTX 的开发者和维护者。 前言 随着物联网技术的迅猛发展,人与设备、设备与设备之间的互动已变得不再困难,而如何更加自然、高效、智能地实…

为何不能暂停AI研发?丨杨立昆吴恩达对话实录

北京时间4月8日凌晨0:30,Yann LeCun(杨立昆)和吴恩达针对近期甚嚣尘上的「AI暂停」一事进行了一场深入讨论,讨论主题为「为何为期6个月的AI暂停是完全错误的」。在这场风波中,二人都立场鲜明,明确表态反对暂停AI研发。汽车刚发明时没有安全带和交通信号灯,Yann LeCun认为…

智能并非万能,ChatGPT 虽火,但别忽视 AIGC 的黑与白!

ChatGPT、GPT-4 引领的 AIGC 浪潮已至,自动化、生成式的方式将为各行各业从底层研发工具、到中间层架构设计、再到上层应用带来一定的革新。 身处变革洪流之中的我们,盲目跟风势必不可取,那又该如何正确与理性看待这门技术,AIGC 将…

GPT-4的黑箱运作方式引科学家不满

原文作者:Katharine Sanderson 科研人员对这项AI技术充满期待,但对其底层技术的秘而不宣感到不满。 上周,人工智能公司OpenAI推出了GPT-4——驱动其热门对话机器人ChatGPT的大型语言模型的最新版本。这个语言模型能根据几乎任何提示创作有人类…

产品未出 百度朋友圈“开演”

ChatGPT这股AI龙卷风刮到国内时,人们齐刷刷望向百度,这家在国内对AI投入最高的公司最终出手了,大模型新项目文心一言(ERNIE Bot)将在3月正式亮相,对标微软投资的ChatGPT。 文心一言产品未出,百…

3·15特辑 | 少侠,可曾听说ChatGPT也有“食品安全问题”?

3月15日,有两件事情最吸引国内网民的眼球:一件是牵动所有消费者的315晚会,另一件则是ChatGPT母公司OpenAI于当日凌晨发布了再次爆火出圈的GPT-4。 据媒体报道,相比于ChatGPT之前所使用的GPT-3.5 架构,GPT-4实现了以下几…

最佳实践 | 用腾讯云智能语音打造智能对话机器人

在AI技术的推动下,智能对话机器人逐渐成为我们工作、生活中的重要效率工具,乃至是伙伴,特别是为企业带来最原始最直观的“降本增效”落地实现。 作为开发者,你是否有想过基于语音技术打造一款智能对话机器人呢? 本文将…

大语言模型(LLM)发展历程及模型相关信息汇总(2023-07-12更新)

大语言模型(large language model,LLM)发展历程及模型相关信息汇总(2023-07-12更新) LLM发展时间轴:以下用表格形式汇总了从 BERT(2018-10-11)到 Baichuan(203-06-15)共计 58种语言大…

一些常用的搜索技巧总结

最近ChatGPT的出现让全网哗然,其对自然语言和代码的处理能力,对文字的理解能力和固定模板下的创作能力都强得离谱。但比起这些,最令我惊讶的还是他及其庞大的知识库。数以千亿计的训练数据让他切实的做到了博古通今。在我看来,拥有…

chatgpt赋能Python-pycharm改名字

PyCharm更名为JetBrains PyCharm——专属Python开发者的最佳IDE JetBrains PyCharm是一款Python开发者最喜欢使用的IDE之一。然而,在2021年初,这款世界著名的Python IDE进行了一次重大更名——PyCharm更名为JetBrains PyCharm。在这篇文章中&#xff0c…

Claude 使用教程 AI助手,可平替Chatgpt,无需魔法

今天来分享下Claude AI工具2023-4月最新使用方法, Claude是Anthropic公司开发的一种基于大型语言模型的AI助手,类似于ChatGPT。 背景:Anthropic是一家由OpenAI的前联合创始人Dario Amodei和他的妹妹Daniela Amodei创立的AI研究公司 。他们的…

使用魔法改善魔法,用chatgpt生成剪贴板保存工具减轻工作量

最近开始使用chatgpt生成代码来编写小工具,大部分时候还算靠谱,就是每次从网页上粘贴内容到编辑器中比较麻烦,尤其是chatgpt洋洋洒洒,给了若干个程序代码,一个个的粘贴真是要了老命了。 试了试cursor,发现也…

Claude 免注册教程

前 OpenAI 副总裁创建的人工智能新项目 “Claude” 来了,有望与 ChatGPT 展开激烈竞争。 Claude 是什么? Claude 是由人工智能安全创业公司 Anthropic 开发的 AI 产品。Anthropic 由多位知名高校的人工智能专家联合创立,其宗旨是研究如何设计…

天津市人工智能计算中心揭牌 天下津梁融汇AI之力

“九河下稍天津卫,三道浮桥两道关”,这是天津人熟知的一句话,意思是九河下稍的尽头是天津卫,是说天津是九条河流的入海口。自明永乐二年天津设卫以来,这座城市就是江河汇聚、贯通南北的水陆码头。天津名字的由来之一&a…

昇腾AI深耕沽上:港口辐射力之后,天津再添基础创新辐射力

作者 | 曾响铃 文 | 响铃说 AI计算正在以新基建联动产业集群的方式,加速落地。 不久前,天津市人工智能计算中心正式揭牌,该中心整体规划300P算力,2022年底首批100P算力上线投入运营,并实现上线即满载。 这是昇腾AI…

AIGC:StableLM 简介

文章目录 [toc]简介应用实践小结其他 简介 众所周知,去年初创公司 Stability AI 发布的 AI 图像生成工具 Stable Diffusion,成为一种革命性的图像模型,也使 AI“文生图”实现了飞速的发展。满载着大家对其“不再局限于开发图像生成”和“开源…

Stable Diffusion公司开源大语言模型StableLM,网友:不是我想要的!

整理 | 朱珂欣 出品 | CSDN(ID:CSDNnews) 众所周知,去年初创公司 Stability AI 发布的 AI 图像生成工具 Stable Diffusion,成为一种革命性的图像模型,也使 AI“文生图”实现了飞速的发展。 满载着大家对其“…

copilot使用教程

Copilot简介 Copilot是⼀种基于⼈⼯智能的代码⾃动补全⼯具,由OpenAI和GitHub共同开发。它使⽤⼈⼯智能算 法来分析代码库,并根据上下⽂和编程语⾔的语法提⽰,⾃动⽣成⾼质量的代码。⽬前,Copilot只能 与GitHub上的代码库集成&…

zblog负载过高导致访问不流畅处理办法

当您的zblog负载过高时,可能会导致网站响应时间过长,甚至无响应。这会影响到您的访客体验,同时也会影响您的网站排名。以下是一些应对方法: 1. 增加服务器资源:如果您的服务器配置过低,可以考虑增加资源&am…