AI语音自动化脚本开发

AI语音自动化脚本开发本篇文章主要介绍如何使用 python 实现文字转换成语音文件 电脑执行语音文件 使用音响进行播放 然后对智慧屏执行的语料进行测试 在对语音执行效果进行断言 最后输出测试结果 不一定是智慧屏 也可以是

大家好,欢迎来到IT知识分享网。

本篇文章主要介绍如何使用python实现文字转换成语音文件,电脑执行语音文件,使用音响进行播放,然后对智慧屏执行的语料进行测试,在对语音执行效果进行断言,最后输出测试结果,不一定是智慧屏,也可以是其它支持语音的设备都能测试,比如汽车智能系统、各种支持语音的智能设备

一、安装python

1.首先你本机需要安装python,python可以到官网下载安装即可,下载地址 https://www.python.org/downloads/windows/ ,本次python的版本是3.7.6 

image.png

2.本次代码是在PyCharm工具上进行编写,可以自己进官网下载安装,使用pip 命令安装各种第三方关联插件,pip install 包名,提示了Successfully 就代表安装成功,也可以进入File》Settings》Project》Python Interpreter,查看哪些插件已经安装成功 

image.png
image.png
image.png

二、生成语音文件

1.语音文件是执行语音测试所用到的文件,调用pyttsx3生成,语音文件目录在audio_output,只需要在corpus文件维护就行 

image.png
image.png

2.只需要右键执行Generate_corpus文件,即可生成 

image.png
image.png

3.如果该设备在audio_output下未创建过文件夹,则需要手动创建文件夹,命名成对应的设备名称,并且把生成的语音文件copy到该目录下(已经存在该设备命名的文件夹,则只用copy新生成的语音文件到该目录即可) 

68e74e49256971a501f20a550d7db36.png

三、开发自动化脚本

1. 在general文件下的Run_api文件,先定义全局变量,把域名、登录用户、密码、家庭名称等变量定义到类下面,这样可以直接使用类名.变量名进行调用,然后首先开发一个登录方法,用来获取accessToken,用来后面的接口进行鉴权 

image.png
image.png

2.开发一个家庭查询方法,用来获取家庭id 

image.png

3.开发一个设备查询方法,用来获取设备id,设备查询接口需要传入一个设备名称参数,需要在执行语料Hood.xlsx中进行申明,需要确保该设备名称就是app家庭定义的设备名称 

1710209801987.png
image.png

4.开发一个前置操作判断方法,用来测试某条语料前执行一些操作,比如测试空调打开功能,首先就执行关闭空调动作,list用来申明要执行的语料,如果该语料前置条件已经开发好,则把该语料写到对应的list就可以,不用每条语料编写一个list,设备查询接口需要传入两个参数,一个是设备名称、一个是执行语料,需要在执行语料Hood.xlsx中进行申明 

image.png

5.开发一个设备状态查询接口,用来执行完语料,在去检查对应设备的状态,比如开关、温度、风速等,设备查询接口需要传入两个参数,一个是设备名称、一个是执行语料,通过设备id去查询该设备的执行状态,然后具体的设备下需要维护不同语料断言的jsonpath,最后为断言结果赋值,用来输出测试结果,语料的开发规则和前置操作一样,当该设备下的语料判断规则一样,则写在同一个list即可,不同则需要另外创建一个新的list 

image.png
image.png

四、运行逻辑控制讲解

1.运行文件为auto_test_main,该文件可以读取到执行语料、关联的设备文件名,然后传递给run方法 

image.png

2.run方法有2个重要参数:test_sound_list、test_device_name,其中test_sound_list用来控制整个大循环,每次大循环一次,就会执行下一条语料,并且初始化每条语料执行成功次数,每次一条语料执行完设置的次数(Run_api文件设置number_of_cycles变量),才会执行下一条语料,run方法里面有个小循环用来调用audio_test_main方法,最后所有语料执行完毕,就会生成excel文件 
 def run(self, test_sound_list=None, audio_dir=None, wakeup_mode=0,test_device_name=""): i = 0 for sound_name in test_sound_list: print("---------------外部循环--------------------------------------------------") print("时间: " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) device_name = test_device_name[i] print("设备名称 device_name = " + device_name) # print(sound_name) i = i+1 print(device_name + "设备 执行第" + str(i) + "条语料测试,语料:" + sound_name) # 控制总共的循环次数 ScreenTester.number_of_executions = 0 ScreenTester.number_key = 0 #初始化统计结果 ScreenTester.number_key1 = 0 #初始化统计结果 row =i+1 for k in range(Run_api.number_of_cycles): k = k+1 if k == 1: start_time = time.time() local_time = time.localtime(start_time) log_start_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time) Logger.add_data(self, device_name, sound_name, log_start_time) print("创建执行语料的测试项") column = k+5 global number_of_executions ScreenTester.number_of_executions = ScreenTester.number_of_executions + 1 print("--------------内部循环---------------------------------------------------") print("时间: " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) print("执行内部循环,已经执行" + str(k) + "次循环") self.audio_test_main(sound_name=sound_name, audio_dir=audio_dir, wakeup_mode=wakeup_mode, device_name=device_name,row=row,column=column) print(device_name + "设备已经完成语料: " + sound_name+" "+str(Run_api.number_of_cycles)+"次循环测试,开始执行下一条语料测试") Logger.save(self,device_name) print("-------------------所有测试语料已经执行完毕,程序已经停止-------------------------------") wakeup_mode = 0 self.play_me("所有测试语料已经执行完毕.wav", audio_dir, wakeup_mode) self.play_me("程序已经停止.wav", audio_dir, wakeup_mode) 
3. audio_test_main方法用来执行接登录脚本获取accessToken、设备id获取、设备前置执行动作,以及执行完语料播放之后进行设备状态查询,然后进行断言,当执行成功就会在excel标记为√,执行失败就标记为×,当该条语料的执行次数和设置的执行次数一致,就计算出通过率,并且写入到excel 
 def audio_test_main(self, sound_name='我离家了' , audio_dir=None, wakeup_mode=0,device_name="",row='',column=''): voice = sound_name + '.wav' #执行语音测试 global number_of_executions,number_key,number_key1 # print("大循环次数 ="+str(ScreenTester.number_of_executions)) Run_api.login(self) Run_api.home_list(self) Run_api.device_list(self, device_name) Run_api.device_pro_action(self, device_name,sound_name) self.play_me(voice, audio_dir, wakeup_mode,device_name) time.sleep(3) Expected_results = Run_api.device_status(self, device_name,sound_name) # print(sound_name) if Expected_results == "执行成功": global number_key ScreenTester.number_key = ScreenTester.number_key +1 # print("row={},column={}".format(row,column)) # print(type(row)) Logger.add_cell(self,row,column,"√") print(sound_name+" 语料执行成功次数 number_key = "+str(ScreenTester.number_key)) else : print("断言失败") Logger.add_cell(self,row,column,"×") if ScreenTester.number_of_executions == Run_api.number_of_cycles: start_time = time.time() local_time = time.localtime(start_time) log_start_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time) percentage = ScreenTester.number_key/ScreenTester.number_of_executions #输出百分比 print(sound_name+" 语料测试通过率 ="+"{:.2%}".format(percentage)) Logger.add_cell(self,row, 4, Run_api.number_of_cycles) Logger.add_cell(self,row, 5, "{:.2%}".format(percentage)) 

五、执行自动化脚本

1.首先在主目录下的Hood.xlsx文件中填写好已经开发好的语料,如下图所示 

image.png

2.主目录auto_test_main下,点击右键,选择Run即可执行 

image.png

3.执行完毕,测试结果会输出到result目录 

image.png
image.png


如果文章对你有帮助,欢迎关注本人公众号,公众号与本平台文章同步,方便大家查阅,本人会持续推出与测试有关的文章,与大家分享测试技术,每一篇原创文章都是用心编写,杜绝抄袭复制


技术交流群:加群请输入验证信息 51cto
              在这里插入图片描述


微信二维码关注公众号:

AI语音自动化脚本开发


关注之后,回复AI,即可获取本次编写的代码框架下载地址:

1710231202997.png

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/138440.html

(0)
上一篇 2025-06-12 20:26
下一篇 2025-06-12 20:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信