制作一款读书机器人

2025-10-04 10:38:15

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')

然后按照语音要求就可以阅读书籍了

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢