WRITE AS 控制欲(write as 控制欲金)

更新时间:2023-03-02 17:33:38 阅读: 评论:0

作者 | 叶圣

出品 | AI科技大本营(ID:rgznai100)

导语:本篇文章将基于百度API实现对电脑的语音智能控制,不需要任何硬件上的支持,仅仅依靠一台电脑即可以实现。作者经过测试,效果不错,同时可以依据作者所给出的代码进行修改加入自己需要的功能,而所有代码的实现都是依靠python编程实现。试想,通过语音实现对电脑的控制,而电脑又可以对其他硬件进行控制,那么即可以实现语音对其他硬件的控制,即达到智能家具的效果。

在人工智能的发展越来越火热的今天,其中智能应用也在伴随着我们的生活,其中最为典型的便是语音识别,近几年来,语音识别技术取得显著进步,同时语音识别技术也慢慢渗入了工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。语音识别最基本的思想包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等,而这里我将对语音识别进行生活中的很好应用,让机器能听懂人类讲话,并做出操作控制。

首先我们选用的编程语言是python,要用到的模块有jieba模块,用以实现对中文语句进行分段;os,win32con和sys模块用来实现对电脑的控制;time模块用来延时;wave 和pyaudio模块用来录音;pygame模块用来播放声音;pynput模块用来控制键盘;random模块随机选取;其中导入模块这一段代码为:

# encoding=utf-8import jieba from aip import AipSpeechimport osimport sysimport timeimport win32conimport waveimport numpy as np from pyaudio import PyAudio,paInt16import pygame from pynput.keyboard import Key, Controller from random import choice

然后在百度api申请账号可以得到密码和用户名,申请语音识别项目,至于为什么不用电脑自带的微软语音识别,是考虑到其识别效果的不准确。其中这一段代码为:

#开始录音标识APP_ID = '15118279'#百度分配的APP_ID注册时可以看到,这里是我的API_KEY ='xUx0Gm2AG2YMtA3FnGfwoKdP'#百度分配的API_KEY注册时可以看到,这里是我的SECRET_KEY = 'hdxyMvABhUD4xnacGtDdeHbEOUGmdjNx'#百度分配的SECRET_KEY注册时可以看到,这里是我的然后用代码client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)实现对百度语音识别的调用;result = client.synthesis('语音控制开始', 'zh', 1, {'vol': 5,})用以标志语音控制的开始语句,同时接上下面的判断语句判断模块调用是否成功:# 识别正确返回语音二进制错误则返回dict 参照下面错误码if not isinstance(result,dict): with open('audio.mp3', 'wb') as f: f.write(result)#将“语音控制开始”这段文字语音翻译成音频文件audio.mp3

接着依靠pygame模块对audio.mp3进行播放,即可以听到电脑说了句“语音控制开始”这句话,即标志着你可以进行说话以达到控制的效果。代码如下:

pygame.mixer.inittrack = pygame.mixer.music.load('audio.mp3')pygame.mixer.music.playtime.sleep(2)pygame.mixer.music.stopprint("开始")

紧接着下面的是录音,将你的声音录制下来才能对录制下来的音频文件进行识别,这里主要依靠wave模块进行录音,代码如下:

#############################class GenAudio(object): def __init__(lf): lf.num_samples = 2000 # pyaudio内置缓冲大小 lf.sampling_rate = 8000 # 取样频率 lf.level = 1500 # 声音保存的阈值 lf.count_num = 20 # count_num个取样之内出现COUNT_NUM个大于LEVEL的取样则记录声音 lf.save_length = 8 # 声音记录的最小长度:save_length?*?num_samples?个取样 lf.time_count = 8 # 录音时间,单位s lf.voice_string = def save_wav(lf, filename): wf = wave.open(filename, 'wb') wf.tnchannels(1) wf.tsampwidth(2) wf.tframerate(lf.sampling_rate) wf.writeframes(np.array(lf.voice_string).tostring) wf.clo def read_audio(lf): pa = PyAudio stream = pa.open(format=paInt16,channels=1, rate=lf.sampling_rate, input=True, frames_per_buffer=lf.num_samples) save_count = 0 save_buffer = time_count = lf.time_count while True: time_count -= 1 # ?读入num_samples个取样 string_audio_data =stream.read(lf.num_samples) # ?将读入的数据转换为数组 audio_data =np.fromstring(string_audio_data, dtype=np.short) # 计算大于?level?的取样的个数 large_sample_count =np.sum(audio_data > lf.level) print(np.max(audio_data)), "large_sample_count=>",large_sample_count # ?如果个数大于COUNT_NUM,则至少保存SAVE_LENGTH个块 if large_sample_count >lf.count_num: save_count = lf.save_length el: save_count -= 1 if save_count < 0: save_count = 0 if save_count > 0: save_buffer.append(string_audio_data) el: if len(save_buffer) > 0: lf.voice_string =save_buffer save_buffer = print("Recode?a?piece?of??voice?successfully!") return True if time_count == 0: if len(save_buffer) > 0: lf.voice_string =save_buffer save_buffer = print("Recode?a?piece?of??voice?successfully!") return True el: return True

接着用

r = GenAudior.read_audio

r.save_wav("test.wav")这一段语句用以保存录制下来的声音为test.wav的音频文件。再紧接着用ffmpeg实现对录音文件的上传,以达到语音识别的目的,代码如下:

#百度语音识别# 读取文件def get_file_content(filePath): cmd_str = "ffmpeg -y -i %s -acodec pcm_s16le -f s16le -ac 1 -ar 16000 %s.pcm"%(filePath,filePath) os.system(cmd_str) # 调用系统命令ffmpeg,传入音频文件名即可 with open(filePath + ".pcm",'rb') as fp: return fp.read然后用# 识别本地文件a =client.asr(get_file_content('test.wav'), 'pcm', 16000, { 'dev_pid': 1536,})if a.get('result'): a=a.get('result')[0]print(a)即可实现对录音文件的识别,此时会输出识别的结果,例如a=“我想问下徐州的天气”。再接着依靠jieba分词对你说的话分段g_list = jieba.cut(a)s=("".join(g_list))print(s)a="["+s+"]"此时就会将你说的话一个字一个字的分开,并保存为数组a。再定义几个数组为song=["歌","歌曲","音乐","听"]movie=["播放","电视","看","电影"]brower=["搜索","浏览"]

用以判断你说的话中有没有在以上数组中,如果你说的话有关键字在song这个数组中,就播放音乐,即为下面代码要实现的功能。

如果你说的话中有“酷狗”这两个字的话,就打开酷狗,具体代码如下:

if "酷狗" in a: os.startfile("D:program files(x86)kugouKuGou.exe")

这里D:program files (x86)kugouKuGou.exe为我的电脑酷狗的安装路径,具体路径可以对其快捷方式右键打开所在文件位置找到。

如果你说的话中有“优酷”这两个字的话,就打开优酷,具体代码如下:

if "优酷" in a: os.startfile(r"E:YouKuYoukuClientproxyYoukuDesktop.exe")

这里E:YouKuYoukuClientproxyYoukuDesktop.exe e为我的电脑优酷的安装路径,具体路径可以对其快捷方式右键打开所在文件位置找到。

如果你说的话中有“关机”这两个字的话,就关机,具体代码如下:

if "关机" in a: os.system("shutdown -p")如果你说的话中有“wifi”这两个字的话,就连接wifi,具体代码如下:if "wifi" in a: os.startfile(r'F:代码python连接WiFijgh.exe')

这里jgh.exe为我编的一个自动连WiFi的程序,我自己可以直接调用。

如果你说的话中有"搜索","浏览"这几个字的话,就打开浏览器并搜索对应的内容,具体代码如下:

for i in brower: if i in a: os.startfile(r"D:program files(x86)3606Application360.exe") time.sleep(20) keyboard = Controller keyboard.type(s) time.sleep(2) keyboard.press(Key.enter)

如果你说的话中有"歌","歌曲","音乐","听"这几个字的话,就打开随机播放你电脑里下载的音乐,具体代码如下:

for i in song: if i in a: Newdir = path = r'C:UrsasusMusic' filelist = os.listdir(path) # 该文件夹下所有的文件(包括文件夹) for files in filelist: # 遍历所有文件 Olddir = os.path.join(path,files) # 原来的文件路径 if os.path.isdir(Olddir): # 如果是文件夹则跳过 continue filename =os.path.splitext(files)[0] # 文件名 filetype = os.path.splitext(files)[1] # 文件扩展名 new = path + "\" + files if filetype == ".mp3": Newdir.append(new) os.startfile(choice(Newdir))

其中C:UrsasusMusic为我下载音乐的路径,具体路径根据自己的电脑而定。

至此,语音控制功能基本实现,其中包括的功能有,语音播放音乐,语音打开浏览器并搜索你所的话,语音打开优酷,语音打开酷狗,语音实现自动关机,并且进过测试,其中语音识别效果甚好,即使你的声音很沧桑,很小也可以识别的很准确,所以说这一项应用的实现是真正有价值的,并且其中如果要加入其他的功能的话,可以依据我的思维进行填补实现,比如语音锁屏,语音换壁纸等等。

总结一下程序的总体思维为:让电脑说“语音控制开始”,用来判断模块是否完整,同时也是标志着你可以进行对电脑控制了;然后对周围环境录音,对录音文件语音识别成文字,如果你说的话有一些定义的关键词的话,就执行对应的操作。例如“我想听首歌”这句话有“歌”这个关键字,就会执行播放歌曲的功能,至此智能控制功能完美实现。

作者简介:

叶圣,中国矿业大学,擅长Python,vbs,bat,vc++,H5等等,自研安卓武侠游戏,桌面智能宠物,vip视频解析等等

(*本文为 AI科技大本营投稿,转载请微信联系 1092722531)

本文发布于:2023-02-28 21:21:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1677749618106178.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:WRITE AS 控制欲(write as 控制欲金).doc

本文 PDF 下载地址:WRITE AS 控制欲(write as 控制欲金).pdf

标签:WRITE   write
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|