制作一款读书机器人
1、首先先百度“百度AI开放平台”并点击进入
2、按照百度AI开放平台注册的方法注册一个百度AI账号并进入控制台
3、我们需要用到文字识别还有语音合成的接口,但是不管是语音合成还是文字识别想要调用其API接口就必须获取Access Token,获取Access Token的方式就是需要在百度AI 云平台中创建应用,创建应用的过程中要给所创建的应用取名,并且选择该应用需要调用的功能是什么,应用创建完成后,系统会自动给出一个AppID和一个API Key以及一个Secret Key
4、做完前边的准备之后,将准备好的树莓派将其系统安装好,安装好后需要安装Python3.5
所以要在其命令行窗口下输入sudo apt-get install python3.5;输入后,系统会在安装资源准备好后提问是否继续安装:利用键盘输入Y并按回车键确认,然后等待安装完成。
安装完成后需要继续安装Python3的开发资源,继续输入命令:sudo apt-get install python3.5-dev,并且系统会继续提问是否继续安装。
利用键盘输入Y并按回车键确认,然后等待安装完成,并且在等待安装完成的过程中需要保持网络连接通畅,并且中途不能断电重启。
5、接着安装Pip3,继续在命令行中输入:sudo apt install python3-pip,同样的利用键盘输入Y并按回车键确认安装,等待安装完成。安装完Pip3后继续在命令行中输入sudo pip3 install baidu-aip,然后等待安装完成,安装过程需要保持网络连接通畅,并且中途不能断电重启,安装完成后就可以利用Python来调用百度AI的API接口了,并且所下载的百度API库不仅仅可以调用文字识别和语音合成还可以调用百度AI云中其他功能的API接口,可谓是一劳永逸。
6、利用Python截取文字图像:
截取图像首先需要一款可以获取图像的摄像头,本设计选取的是一种USB的摄像头,然后利用Python的picamera设置好截图后图像的大小以及清晰度等参数,然后调用其接口对文字图像进行截图,并将截好的图片保存为jpg的格式。具体操作见网址http://blog.eetop.cn/blog-1143350-4064032.html
要想利用Python在树莓派上实现播放MP3的音频文件首先需要安装一个pygame模块,由于事先在树莓派中已经提前安好了pip3则只需要在树莓派的命令行窗口中输入sudo pip3 install pygame然后等待安装成功后即可使用该模块,然后通过程序导入该模块、进行模块的初始化、装载MP3文件,然后启动该模块就可以成功的播放出所装载的MP3文件了
7、打开Python输入代码
from aip import AipSpeech
from aip import AipOcr
import sys
import os
import time
#在这三个地方填入参数
api_id = '14***597'
api_key = '4GR**********VC5MqkIG'
secret_key = 'k61d********HOCn6Ymvodsj2IV'#你自己文字识别的id和秘钥
APP_ID = '14****36'
API_KEY = 'BY************B9VsQz'
SECRET_KEY = 'XuF3U************YdaF3vK7PbPwBlW1'
#你自己语音合成的id和秘钥
aipOcr = AipOcr(api_id, api_key, secret_key)
lalala = AipSpeech(APP_ID, API_KEY, SECRET_KEY)#到这里都是固定用法
#汉字转语音
fidw = open('开头语.txt',encoding='gbk')
#lines = []
#with open('shuju2.txt', 'r') as f_in:
# for line in f_in:
# line = line[0:-2]+' '+','
# lines.append(line)
#with open('shuju2.txt', 'w') as f_out:
# f_out.writelines(lines)
#
hanzi = lalala.synthesis(fidw, 'zh', 1, {
'vol': 5,'per':0,'spd':5
})
#识别正确返回语音二进制错误则返回dict 参照下面错误码
if not isinstance(hanzi, dict):
with open('小度.mp3', 'wb') as ba:
ba.write(hanzi)
fidw.close()
#播放语音
os.popen('小度.mp3')
#进入检测循环
while(1):
biaozhiwei= open('标志位.txt','r')
biaozhi=biaozhiwei.read()
if biaozhi == '0':
biaozhiwei.close()
biaozhiwei= open('标志位.txt','w')
zhiling = '#'
biaozhiwei.write(zhiling)
biaozhiwei.close()
os.popen('密码正确.mp3')
time.sleep(4)
while(1):
biaozhiwei= open('标志位.txt','r')
biaozhi=biaozhiwei.read()
if biaozhi == '#':
biaozhiwei.close()
biaozhiwei= open('标志位.txt','w')
zhiling = '?'
biaozhiwei.write(zhiling)
biaozhiwei.close()
os.popen('选择方式.mp3')
elif biaozhi == '*':
biaozhiwei.close()
biaozhiwei= open('标志位.txt','w')
zhiling = '?'
biaozhiwei.write(zhiling)
biaozhiwei.close()
os.popen('选择方式.mp3')
elif biaozhi == '1':
biaozhiwei.close()
biaozhiwei= open('标志位.txt','w')
zhiling = '?'
biaozhiwei.write(zhiling)
biaozhiwei.close()
#汉字转语音
kaishishibie = open('开始识别.txt',encoding='gbk')
hanzi1 = lalala.synthesis(kaishishibie, 'zh', 1, {
'vol': 5,'per':0,'spd':4
})
#识别正确返回语音二进制错误则返回dict 参照下面错误码
if not isinstance(hanzi1, dict):
with open('小度2.mp3', 'wb') as ba:
ba.write(hanzi1)
kaishishibie.close()
#播放语音
os.popen('小度2.mp3')
time.sleep(14)
# 读取图片
filePath = "a.jpg"
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
# 定义参数变量
options = {
'detect_direction': 'true',
'language_type': 'CHN_ENG',
}
# 调用通用文字识别接口
result = aipOcr.basicAccurate(get_file_content(filePath),options)
print(result)
shuju=str(result)
f=open('shuju.txt','w')
f.write(shuju)
f.close()
#提取汉字
fid = open('shuju.txt')
fidw = open('shuju2.txt','w')
lines = fid.readlines()
character = {}
exclude = ['m','g','”','“',',',':',';',')','(', '《','》','~','【','】','、','。','①','③','②','④','⑤','⑥','⑦','⑧','⑨']
for line in lines:
line = line.strip()
temp = ''
for i in range(len(line)):
if ord(line[i])> 127:
temp=temp+line[i]
line = temp
size = len(line)/3
#print line,len(line)
size= int(size)
for i in range(size):
c = line[i*3:i*3+3]
#print c,len(c)
if c not in character.keys():
character[c]=1
else:
character[c]+=1
for key in character.keys():
#print key, character[key]
if key in exclude:
continue
fidw.writelines(key)
fidw.close()
fid.close()
#汉字转语音
fidw = open('shuju2.txt',encoding='utf-8')
hanzi = lalala.synthesis(fidw, 'zh', 1, {
'vol': 1,'per':1,'spd':3
})
#识别正确返回语音二进制错误则返回dict 参照下面错误码
if not isinstance(hanzi, dict):
with open('auido.mp3', 'wb') as ba:
ba.write(hanzi)
fidw.close()
#播放语音
os.popen('auido.mp3')
elif biaozhi == '2':
biaozhiwei.close()
biaozhiwei= open('标志位.txt','w')
zhiling = '?'
biaozhiwei.write(zhiling)
biaozhiwei.close()
os.popen('段奥娟 - 陪我长大.mp3')
elif biaozhi == '3':
biaozhiwei.close()
biaozhiwei= open('标志位.txt','w')
zhiling = '?'
biaozhiwei.write(zhiling)
biaozhiwei.close()
os.popen('段奥娟 - 陪我长大.mp3')
elif biaozhi == '9':
biaozhiwei.close()
biaozhiwei= open('标志位.txt','w')
zhiling = '?'
biaozhiwei.write(zhiling)
biaozhiwei.close()
os.popen('密码错误.mp3')
然后按照语音要求就可以阅读书籍了