本文目录一览:
- 1、关于Python的问题
- 2、关于python的问题?
- 3、如何用python调用百度语音识别
- 4、自己动手写Python进行文本转语音程序,共计11行代码
- 5、如何优雅的用Python玩转语音聊天机器人
关于Python的问题
不管在什么编程语言中,if语句都是用来做判断的
如果 [表达式] 就做什么事情
if的后面一定是一个表达式,这个表达式所返回的一定是一个布尔值 也就是 要么 真 要么假
在计算机语言中,真可以用数值任意的大于0的数值来表示,假只可以用0来表示
你可以想象成,一个篮子里,不管装了1个苹果还是1千万个苹果 苹果是真实存在的,而一个瓶子里如果是0个苹果 那么就是没有苹果,苹果就是不存在的,就为空。
理解了这个问题,就比较好理解上面的语句了
先看,如果a = 1 (a复制为任意的非0数值 结果都是一样)
那么if的表达式就为a a的数值为1表示表示返回的布尔值为真 那么可以执行下面的语句 打印出ss
再看,如果a = 0
那么if的表达式中a返回的布尔值为假,那么就不会再执行print('dd') 了 也就没有任何输出了
关于python的问题?
你的程序大部分都没错,只是对列表my_list中的字符串元素"5"转数值元素时,要把转换结果赋值给原元素,
否则列表my_list没改变,导致处理字符串元素"5"时,出现不支持字符串和整数相除操作的错误.
完整的Python程序如下(改动的地方见注释,仅一处有问题)
my_list = [1, 2, 3, 4, "5"]
my_list[4]=int(my_list[4]) #这里把int(my_list[4])改成my_list[4]=int(my_list[4])
number = int(input("请输入一个number:"))
for i in my_list:
print(f"{i}/{number}={i/number}")
源代码(注意源代码的缩进)
如何用python调用百度语音识别
1、首先需要打开百度AI语音系统,开始编写代码,如图所示,编写好回车。
2、然后接下来再试一下16k.pcm的音频,开始编写成功回车,如图所示的编写。
3、最后,查看音频c的属性,可以看到音频持续28秒,这样就是用python调用百度语音识别成功解决问题。
自己动手写Python进行文本转语音程序,共计11行代码
1、首先安装Python程序推荐3.7
2、下载 pyttsx3库。
3、将需要转换的文本和程序放到一起。
4、运行程序就会朗读文本和保存文本朗读的语音文件。
以下是源代码:
import pyttsx3
with open ( 'word.txt' , encoding = 'utf-8' ) as obj:
line=obj.readline()
engine=pyttsx3.init()
rate=engine.getProperty( 'rate' )
engine.setProperty( 'rate' , 160 )
volume=engine.getProperty( 'volume' )
engine.setProperty( 'volume' , 0.6 )
engine.say(line)
engine.save_to_file(line, 'abc.mp3' )
engine.runAndWait()
如何优雅的用Python玩转语音聊天机器人
所需硬件:
树莓派B+
人体红外线感应模块
内置麦克风摄像头(实测树莓派免驱淘宝链接)
申请API:
百度语音api
图灵api
语音聊天机器人实现原理:当有人来到跟前时--》触发聊天功能,开始以每2s检测录制语音--》通过百度语音api合成文字--》传递给图灵api返回回答信息--》通过百度语音合成播放
【人体感应识别部分Python代码renti.py】
123456789101112131415161718192021222324252627282930313233
#/usr/bin/python#coding:utf-8import RPi.GPIO as GPIOimport timeimport osimport signalimport atexitGPIO.setmode(GPIO.BCM) GPIO_PIR = 14 GPIO.setup(GPIO_PIR,GPIO.IN) # Echojing = 0dong = 0 sum = 0sum1 = 0oldren = 0sleep = 0def ganying(): i = 0 ok = 0 error = 0 while i 10: if GPIO.input(GPIO_PIR) == 1 : ok = ok + 1 if GPIO.input(GPIO_PIR) == 0 : error = error + 1 time.sleep(0.01) i = i + 1 ren = ok/(error+1) return ren
1
GPIO_PIR = 14
为 红外线检测模块与树莓派的针脚,脚本函数返回0表示无人,0 为有人
【Python语音识别聊天部分robot.py】
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
#/usr/bin/python# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding( "utf-8" )import urllibimport urllib2import jsonimport uuidimport base64import osimport timefrom renti import * #获取百度tokenappid=7647466apikey="百度API"secretkey="百度API" baidu_url="h.com/oauth/2.0/token?grant_type=client_credentialsclient_id=" + apikey + "client_secret=" + secretkey; y_post=urllib2.urlopen(baidu_url)y_read=y_post.read()y_token=json.loads(y_read)['access_token']#print y_read#print y_token #------------------function------------- def luyin(): os.system('arecord -D plughw:1,0 -c 1 -d 2 1.wav -r 8000 -f S16_LE 2/dev/null') def fanyi():
#---------------语音识别部分 mac_address="haogeoyes" with open("1.wav",'rb') as f: s_file = f.read() speech_base64=base64.b64encode(s_file).decode('utf-8') speech_length=len(s_file) data_dict = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':mac_address, 'token':y_token, 'lan':'zh', 'speech':speech_base64, 'len':speech_length} json_data = json.dumps(data_dict).encode('utf-8') json_length = len(json_data) asr_server = 'm/server_api' request = urllib2.Request(url=asr_server) request.add_header("Content-Type", "application/json") request.add_header("Content-Length", json_length) fs = urllib2.urlopen(url=request, data=json_data) result_str = fs.read().decode('utf-8') json_resp = json.loads(result_str) if json_resp.has_key('result'): out_txt=json_resp['result'][0] else: out_txt="Null" return out_txt def tuling(b): f=urllib.urlopen("23.com/openapi/api?key="此处为图灵API"info=%s" % b) f=json.loads(f.read())['text'] return f def hecheng(text,y_token): #text="你好我是机器人牛牛很高兴能够认识你" geturl="u.com/text2audio?tex="+text+"lan=zhper=1pit=9spd=6cuid=CCyo6UGf16ggKZGwGpQYL9Gxctp=1tok="+y_token return os.system('omxplayer "%s" /dev/null 21 '%(geturl)) #return os.system('omxplayer "%s" /dev/null 21 '%(geturl)) def nowtime(): return time.strftime('%Y-%m-%d %H:%M:%S ') #---------------main-----------------num=0 #num用来判断是第一次说话,还是在对话过程中first=1 #判断是不是第一说话 当1000次没有人动认为是第一次while True: if ganying()!=0: run=open('run.log','a') if first==0: hecheng("你好,我是牛牛机器人,你可以和我聊天,不过说话的时候你必须靠近话筒近一点,",y_token) hecheng("说点什么吧,2秒钟内说完哦.",y_token) first=1 #为1一段时间就不执行 num=0 #从新计数 #print ganying() run.write(nowtime()+"说点神马吧..........."+'\n') print nowtime()+"说点神马吧.........." luyin() #开始录音 out=fanyi().encode("utf-8") #翻译文字 run.write(nowtime()+"我说:"+out+'\n') print nowtime()+"我说:"+out if out == "Null": text="没有听清楚你说什么" os.system('omxplayer "shenme.wav" /dev/null 21 ') else: text=tuling(out) hecheng(text,y_token) print nowtime()+"牛牛:"+text run.write(nowtime()+"牛牛:"+text+'\n') run.close() else: #print ganying() #调试查看是否为0有人没人 #print num num=num+1 #num长时间增大说明没有人在旁边 if num 1000: first=0 #0表示第一次说话
万事俱备 运行nohup python robot.py 哈哈就可以脱离屏幕开始愉快的语音聊天啦
下面看看聊天的日志记录吧
后续更新。。。。。。Python如何用语音优雅的控制小车