语音交互程序

  • 预览
  • 一、简介
  • 二、构成说明
    • (一)语音识别与语音输出
    • (二)命令读取模块
  • 三、功能说明
  • 四、模块下载
  • 五、示例完整版本
  • 六、补充:实现交互等待即唤醒
    • (一)唤醒过程说明
    • (二)下载方式

预览

测试预览,这是完整版本的4倍速度(加速是一件比较麻烦的事,因为moviepy加速时只对视频加速,不对音频加速,因此需要提取无音频的视频进行加速、然后进行音频加速、最后合成)

语音控制程序示例(4倍快速剪辑版)

一、简介

语音命令控制即通过语音实现对于相应任务的完成,此API接口主要实现语音交互式输出,即在语音提示下完成任务所需的人工信息;简单的说就是语音转文本;但是又不止于语音转文本,该模块包括了语音识别即语音转文本、语音输出即文本转语音以及录音判断功能

二、构成说明

程序一共是由 一个三个模块:命令读取(puaudio录音)、命令识别(谷歌语音识别)、命令输出(百度语音)

(一)语音识别与语音输出

语音识别利用的是谷歌语音识别,实测是在所有语音识别中效果最好的,其余的百度语音识别以及cmu均失败不准确,确定在于需要挂上vpn

语音输出使用时的百度的语音输出,相对于pyttsx3以及win32语音输出来说,百度语音识别可以支持中文

以上两个使用的是谷歌平台以及百度平台的接口,并没有真正的识别模型,而有识别模型的speech_recognition中的PocketSphinx识别准确率特别低,总体上只是进行了组合(虽然组合也是一种智力成果,但是毕竟只是在调包)

(二)命令读取模块

真正贡献了智力成果的地方,是对于命令接收程序即录音实现了比较智能的等待——一个简单的算法。等待一共两个条件,即长期不说话(5秒)以及超时即即使说话时间过长也会退出(20秒),看起来似乎很短,但是在剪辑视频中可见其实并不短了,因为几乎每次都是因为命令完成而退出,几乎不会由于20秒的长命令时间退出。当然这个问题在命令复杂的时候会不合时宜,但是命令过于复杂时,现在计算机技术还不能完成。

虽然在语音查询天气的示例中使用了一些自然语音识别技术,但是本质上和上面是一样的,就是将复杂的命令进行切分,切为简单的命令;如果切分的不对或者切分的简单命令不在命令库中,复杂命令依然不能判断。其中自然语言处理主要是最基础的jieba切词,然后使用fuzzywuzzy模块进行模糊匹配,去语料库中匹配,比如在天气查询中,语音输入长沙,那么就会对全国各市县进行模糊匹配,只有匹配结果大于等于90分的才能进入并作为命令输出。然而

这里比较麻烦的是可能存在多个类似的匹配结果,如果继续询问到底是长沙镇、长沙乡、长沙市又比较麻烦,所以选择尽量大的地名作为命令结果,输出长沙市的天气。

三、功能说明

功能类似于家庭音箱,小爱同学;

优点:首先,相比于小爱同学的优点在于,可扩散,用统计学的术语来说就是程序泛化能力强,只要是能够提供API接口的程序都可以运用、
其次,内部功能可以继续扩展,具有极强的个性,相对完美的适应于个人

缺点:谷歌语音识别需要挂vpn,而百度语音可能存在次数限制,虽然现在没有遇到这个限制(说明不商用可能是足够的)

四、模块下载

该语音命令模块上传到了GitHub上,链接: reporter-law/speak_command.
直接

pip install speak_command

亦可

五、示例完整版本

本来在“开始”命令剪辑了一个阅兵时的命令“开始”,但是审核不过,可能需要肖像权

语音命令模块

六、补充:实现交互等待即唤醒

(一)唤醒过程说明

实现语音交互程序的唤醒非常简单,需要一直调用语音识别,如果语音命令含有唤醒词就进入语音交互,否者继续进行等待,类似于对小爱音箱说“小爱同学”才会启动

源码:

from apscheduler.schedulers.blocking import BlockingSchedulerdef wake_speak():"""语音唤醒"""
filename = "J:\pyinstaller\Python3.8版本项目\语音命令库\语音命令模块\录音"
if not os.path.exists(filename):os.makedirs(filename)
file = filename+"\waking.wav"
r(file)
text = kf(file)
print(text)
if "语音命令" in text:print("进去正式命令读取阶段")text = sc.command_speak()return text
else:print("\r非唤醒命令",end="")sched = BlockingScheduler()  # 创建调度器
sched.add_job(wake_speak, 'interval', seconds=15)  # 每隔5秒执行一次
sched.start()

其实就是通过apscheduler,不停的调度
将之放入任务计划程序就可以实现唤醒以及语音命令,将语音命令的输出作为启动其他程序的接口完成完整的语音控制

(二)下载方式

1.whl文件:链接: link.

2、tar.gz压缩包:链接: link.

3.pypi上也上传的,但是有点小问题,不想对版本号进行迭代,就没有上传了

pip install speak_command

语音交互程序:语音识别、语音输出、录音计算相关推荐

  1. 使用react-native-audio进行华为云语音交互服务(实时语音转写)大致流程

    基础前端框架:react-native 语音交互服务:华为云 1.react-native-audio录制音频 华为云支持的音频编码格式如下表: 一共有六种,但是一般用下表的前两种,即不压缩的裸音频格 ...

  2. html5 语音唤醒,语音交互:从语音唤醒(KWS)聊起

    编辑导语:随着手机的逐渐智能化,越来越多的手机只要听到指令就会帮助主人完成一些任务,这就是语音唤醒功能.本文作者围绕语音唤醒功能,从其应用有哪些.工作原理是什么.怎样训练一个唤醒模型.如何测试等方面展 ...

  3. 在ROS中使用中文语音交互(百度语音baidu_speech)

    目前,ROS可以用的中文语音工具还是有一些的,功能也越来越丰富,但有一些有使用的限制,有一些用起来不是很方便. 这里以百度语音为例具体说明,参考链接如下: 1 http://wiki.ros.org/ ...

  4. WTK6900B02语音识别模块,声控模块,语音交互模块,语音识别模块方案-深圳唯创知音电子有限公司...

    简介: WTK6900B02是深圳唯创知音电子有限公司研发.生产的高识别率可离线更换语音识别语句的语音识别模块,结合了WTK6900B02 V2.03-P1与WTK6900B02 V2.03-P2两个 ...

  5. matlab语音停止程序,MATLAB语音信号处理程序

    我们的第一个小项目,要求: 1.给出实验程序和仿真结果,并完成设计报告. 2.用计算机录制一段语音信号作为原始信号,采样频率fs=22.05kHz,数据位数N=16Bit,存入MATLAB工作空间,显 ...

  6. 解密蚂蚁金服MISA:37℃的自助语音交互是怎么做到的?

    什么是IVR IVR(interactive voice response)即互动式语音应答,由PC机(或工控机).电话接口卡.语音板(语音处理卡)和传真卡组成.通过IVR系统,客户可以利用音频按键电 ...

  7. 语音交互开源平台对比

    语音识别项目: http://www.oschina.net/project/tag/203/tts-speech sf.net http://www.codesoso.net/Search?q=%D ...

  8. 离线语音唤醒 SnowBoy +树莓派语音交互实现语音机器人

    离线语音唤醒引擎SnowBoy可以实现离线语音热词的检测,可发起一个安全.完整的语音交互界面. 百度云语音识别API可实现在线的语音识别和语音合成功能.结合离线语音唤醒和语音识别技术可以实现完整.安全 ...

  9. HaaS云端一体智能语音交互方案

    1.方案背景 智能语音交互作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解放双手,随时提供服务,无须借助任何按键.近年来智能家居逐渐走入千家万户,产业市场规模不断增长.智能家居产品种类 ...

最新文章

  1. 我们正处于新科学革命的起点 | 学界热议AI for Science
  2. html5动态气泡效果6,[jQuery]Canvas气泡动态背景效果
  3. 小型自动化运维--expect脚本之自动同步
  4. 《云计算:原理与范式》一3.9 SaaS集成服务
  5. 简谈WP,IOS,Android智能手机OS
  6. 亚马逊专家课 | 数据体系+用户画像+商品画像系列课(立省 299 元)
  7. JZOJ 5436. 【NOIP2017提高A组集训10.30】Group
  8. linux centos查看CPU型号及物理CPU个数
  9. php fopen 图片下载,php curl与fopen下载远程服务器图片实例
  10. shell的控制语句
  11. ArcPy处理土地利用类型数据
  12. mysql返回值_mysql_query的返回值
  13. Qt 互斥量 QMutex
  14. arcgis分隔图层重复出文件_【干货】ArcGIS不可或缺的制图技巧,处理好细节才能让图更专业!...
  15. 【转】RHadoop实践系列之二:RHadoop安装与使用
  16. GIS数据处理与应用开发一站式解决方案
  17. python 爬虫保存为word_微信公众号文章爬虫,本地word文档保存
  18. 【转】资深眼镜人告诉你一些所不为人知的眼镜知识和内幕
  19. 利用python下载钉钉群直播视频
  20. 软件工程方向硕士论文撰写指南

热门文章

  1. influxdb配置说明
  2. 现货白银的一般操作方法
  3. Github推荐--PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了)
  4. 批量给文件名添加如 001、002 顺序的数字序号
  5. DateFormat和SimpleDateFormat
  6. fedora 安装smplayer 播放各种格式视频
  7. 强制换行Java_HTML连续英文字符串强制换行
  8. 弘辽科技:京东美团腾讯等巨头为何押注酒水电商?
  9. iOS11 适配遇到的坑
  10. 手把手教你作出扫雷小游戏