从零打造树莓派智能助手(一)——让树莓派说话

本期原材料:已经完成基本配置的树莓派3b+一个,小音箱一对

本期内容:利用树莓派和百度语音接口,让树莓派可以说出固定的句子。

前置知识:基本Linux命令行,python基础

参考链接:https://blog.csdn.net/lakeheart879/article/details/52016672

一、安装mpg123

之所以选择mpg123这个mp3播放库,是因为据说maplayer2等其他库存在播放过程中可能会报错之类的问题,有了mpg123之后,可以实现播放mp3文件以及在线播放,这就方便我接入百度的API。安装命令行:

sudo apt-get install mpg123

可以使用下面这个例子实验一下mpg123安装是否成功,

mpg123 xxx.mp3

  

安装成功后可以进入下一步:

二、接入百度语音API

百度语音的地址是:http://yuyin.baidu.com

注册账号,然后创建一个新应用,获得一个id和key,然后用这个id和key获取token,

获取token的过程需要查看百度的文档,实际上就是通过一个申请的通讯获取到,方法很多,我这里给出我的方式,通过python文件获取token:

import requests 

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = ‘https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=「」&client_secret=「」‘
response = requests.get(host)
print("正在获取密码...")
if response:
    print(response.json())

  

可以利用命令行vi编写好python文件,然后在命令行运行,注意AK和SK都是一种Key,在注册的应用界面是给出的,我这里用「」代替了,读者可以带入自己的AK和SK。

获取到的结果是一个json文件,但是不需要解析,很简单,直接在打印的结果中复制你的token即可。

然后就可以通过拼接url的方式来合成语音了,具体的拼接方式是:

mpg123 "http://tsn.baidu.com/text2audio?tex="大家好我是一个机器人"&lan=zh&per=0&pit=9&spd=9&cuid=***&ctp=1&tok=「」"

  

同样的,「」指代token的内容,读者替换成自己的token,tex是要合成的语音内容,per是声音的性别,1是男,0是女,默认是女,pit是音调,spd是语速,调节范围都是1-9。在浏览器打开这个链接,也是可以直接听见声音的。

三、利用python进行封装

然后我们将其写入一个python文件,方便以后我们进行智能助手的配置,下面给出我的程序。

# -*- coding: utf-8 -*-

import os

import sys

# 男生
# url = ‘\"‘+ "http://tsn.baidu.com/text2audio?tex=" + ‘\"‘+ sys.argv[1] + ‘\"‘ +"&lan=zh&per=1&pit=7&spd=3&cuid=***&ctp=5&tok=24.96a887117784fe49b73c5f3e6d0e2083.2592000.1575033188.282335-17656521" + ‘\"‘
# print("mpg123 " + "%s"%(url))

# 女生
url = ‘\"‘+ "http://tsn.baidu.com/text2audio?tex=" + ‘\"‘+ sys.argv[1] + ‘\"‘ +"&lan=zh&per=0&pit=7&spd=3&cuid=***&ctp=5&tok=24.96a887117784fe49b73c5f3e6d0e2083.2592000.1575033188.282335-17656521" + ‘\"‘

os.system("mpg123 " + "%s"%(url))

  

本来我直接使用别人的代码,结果发现或多或少都有点小问题(主要就是引号的问题),然后改成这样的,所以读者也可以看着改吧,代码很简单。

封装好以后,就可以直接使用命令行调用,我的文件命名为Read.py,那么就可以这样调用,

python3 Read.py 今天是一个好天气

  

当然,你可以通过在python文件中设置time模块,就可以实现实时报时功能,封装好之后很多功能都可以在python文件中进行集成化。

然后,最简单的循环播放可以利用命令行实现:

 while true ;do python3 Read.py 我真的很烦; done;

  

如果你想做一个智能提醒小助手,可以采用Linux中的crontab命令来实现,我想要它每天早上叫我起床,

有点事,写crontab的教程下回再说吧。。。待续

原文地址:https://www.cnblogs.com/Hangingter/p/11785484.html

时间: 2024-11-09 22:54:36

从零打造树莓派智能助手(一)——让树莓派说话的相关文章

打造强势智能手表平台:Testin云测携手索尼招募全球开发者

打造强势智能手表平台:Testin云测携手索尼招募全球开发者 2014/10/27 · Testin · 业界资讯 日前,全球最大的移动游戏.应用真机和用户云测试平台Testin云测宣布联手索尼公司,发起Smart Watch 2首席APP开发者全球招募活动,强强联合共同打造繁荣有序的智能手表测试平台. 据介绍,本次活动主要面向全球范围内可穿戴设备达人的开发者群体,即日起至11月30日,开发者只需在Testin云测平台提交开发的应用,Testin云测和索尼公司负责后续检测.上架.推广等诸多事宜,

戴文军:如何用边缘计算+边缘存储打造新一代智能视频云

云栖大会七牛云专场论坛于 9 月 20 日在杭州云栖小镇举行,以「当 Cloud 遇上 AI 为主题,围绕「云」和「人工智能」两个关键词,邀请了多名业内大咖,为大家带来了精彩演讲.七牛云技术副总裁戴文军,在会上作了题为<如何用边缘计算+边缘存储打造新一代智能视频云>的分享.? 以下内容为根据现场演讲内容速记的实录整理.???大家下午好.在开始之前,要给大家澄清一下,虽然主持人和很多朋友都说边缘计算现在比较热,但其实今天来看,边缘计算真正意义上的落地不太多,边缘计算的产业化应用带来的应用场景还没

从零打造在线网盘系统之Hibernate查询与更新技术

欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅 本章学习目标 掌握标准查询API的使用 掌握QBE 掌握HQL 掌握SQL 本篇前言 在前面两篇文章中我

从零打造在线网盘系统之Hibernate配置O/R映射

欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅 本篇学习要求 主键映射 普通属性映射 组件映射 一对一关联映射 多对一单向关联映射 多对一双向关联映射

从零打造在线网盘系统之Struts2框架起步

欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅 本篇目标 掌握Struts2工作流程 掌握Struts2控制器 掌握Struts2XML配置 掌握Str

从零打造在线网盘系统之Struts2框架配置全解析

欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅 要想学好一个框架,就必须要学好如何配置好这个框架,下面让我们大体上来一起来了解一下Struts2的相关配

PythonGUI+爬虫-从零打造12306抢票软件

课程介绍:此项目为GUI+爬虫+反反爬虫+网络多线程+自动打码+缓存机制+数据清洗等多项技术综合一体的项目;开发中更能体验抓包思路, MVC, 分层, 封装重构等思想 课程目录:001.12306抢票软件项目-项目展示002.12306抢票项目开篇-2019新年快乐!003.抢票软件项目-项目需求和原型图004.网络基础-网络-IP-域名概念005.网络基础-客户端和服务器概念006.网络基础-客户端和服务器角色007.网络基础-HTTP协议-上008.网络基础-HTTP协议-中009.网络基础

树莓派进阶之路 (028) - 树莓派SQLite3的安装

MySQL占用内存太大,而SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景按需说明.本文介绍的SQLite技巧也可以在其他平台使用,并不局限于树莓派. 安装 SQLite 1 sudo apt-get update 2 sudo apt-get install sqlite sqlite3 3 #如果需要的话还可以顺便安装 PHP 相关组件 4 sudo apt-get

树莓派学习(一)——树莓派安装系统的过程、问题及解决办法

前言-- 买了两三周的树莓派,现在才把树莓派安装配置好系统,真的是想抽自己两耳巴子.不过这个月实在太忙了,又是实习,又是忙着毕业杂事,心里颇不宁静.这两天周末,又重新捣鼓了一下树莓派,准备记录一下在树莓派上安装系统的过程和心得. 注:本人使用的树莓派型号为:Raspberry Pi 3 B+ 正文-- 一.简介 1.树莓派是什么?Raspberry Pi(中文名为"树莓派",简写为RPi,或者RasPi/RPi)是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于Lin