自动语音对话系统 Python实现
自动语音对话系统 Python实现
本篇博客主要基于Linux 上实现智能语音问答系统,主要采用的方法包含:语音采集、语音转换文字、自动问答、语音播报等。本次仿真是自摸索的方案,如有问题可指正交流哈!
如何设计自动问答系统?
实现一个语音问答系统?设计中主要在系统中建立监听进程,语音转文字+文字问答+播报进程,后续准备另开进行进行画面显示。。。
考虑1:系统麦克风如何打开后长时间监听声音?
考虑2:如何获取到问答系统的唤醒关键词?例如小爱音响在开机状态下都能够被“小爱同学”关键语音唤醒,如何实现?
考虑3:唤醒后如何获取对话的wav 片段声音?
考虑4:片段声音如何转换程中文片段?
考虑5:转换后文字片段如何获取智能答复?
考虑6:如何将回复的文字进行语音播报?
Python 仿真调用的主要包
1.snowboy 实现监听关键词
2.pyaudio wave 获取并笔记本麦克风声音并保存wav格式音频
3.回答问题模块:调用开源api 接口
4.ASR自动语音识别算法(算法训练加理论介绍)
5.multiprocessing 多进程实现监听、语音识别和问答的流程
snowboy 安装和使用
snowboy 是开源的、轻量级语音唤醒引擎,通过它创建属于自己的类似“小爱同学”,“hei,sir” ,“自定意"的唤醒词;可支持linux,android、ios 上进行开发和调用,git 后内置相关lib库。
1.如何安装
关于如何安装可自行百度或者参考:安装和生成自定义的关键词
2 如何交互使用?
如何实现监听并获取对话语音?
例如我们喊话"小爱同学"后,音响获取我们对话语音
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :talkboot
@File :main.py
@Author : AICode1
@Date :2023/1/1 下午6:40
'''from . import snowboydecoder
from awaken import snowboydecoder
import signal
import osimport pyaudio
import wave
import numpy as np#设定基础定义
chunk = 1024 # Record in chunks of 1024 samples
sample_format = pyaudio.paInt16 # 16 bits per sample
channels = 1
fs = 16000 # Record at 44100 samples per second
seconds = 5
ts="xxx?"oupts=""def recording_voice():# print("{} ",a_lists)filename = "output.wav"p = pyaudio.PyAudio() # Create an interface to PortAudioprint('开始录音!')stream = p.open(format=sample_format,channels=channels,rate=fs,frames_per_buffer=chunk,input=True)frames = [] # Initialize array to store frames# Store data in chunks for 3 secondsfor i in range(0, int(fs / chunk * seconds)):data = stream.read(chunk)frames.append(data)# Stop and close the streamstream.stop_stream()stream.close()# Terminate the PortAudio interfacep.terminate()print('完成记录!')# Save the recorded data as a WAV filewf = wave.open(filename, 'wb')wf.setnchannels(channels)wf.setsampwidth(p.get_sample_size(sample_format))wf.setframerate(fs)wf.writeframes(b''.join(frames))wf.close()class Rundev():def __init__(self,model,sensitivity=0.5,sleep_time=0.03):# 外置参数self.model = modelself.sensitivity = sensitivityself.sleep_time = sleep_time#内置参数self.interrupted = False# self.detected_back=detecteddef interrupt_callback(self):return self.interrupteddef signal_handler(self,signal, frame):self.interrupted = Truedef run(self):print('正在监听中.........','按 Ctrl+C 停止运行')# capture SIGINT signal, e.g., Ctrl+Csignal.signal(signal.SIGINT, self.signal_handler)detector = snowboydecoder.HotwordDetector(self.model,sensitivity =self.sensitivity)# main loopdetector.start(detected_callback=recording_voice,interrupt_check=self.interrupt_callback,sleep_time=self.sleep_time)print("awak end!")# 使终止detector.terminate()dev = Rundev(os.getcwd()+"/awaken/ninhao.pmdl")def RunQa():print(os.getcwd()+"/ninhao.pmdl")dev.run()def get_awak_out():outs=AwOutreturn outs# 测试
if __name__ == "__main__":passRunQa()
以上代码是监听并保存成wav 的测试代码,在main 中需要起一进程进行监听并保存至指定地址(实现进程件共享)
问答系统如何实现?
1.调用百度、阿里等大厂api 接口,可在他们的云平台上进行注册和查看api 文档实现,需要获取key
2.免费的图灵接口:
直接调用函数实现:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :talkboot
@File :main.py
@Author : AICode1
@Date :2023/1/1 下午6:40
import urllib
import requests
def talkRobot(msg):url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg))html = requests.get(url)return html.json()["content"]if __name__ == "__main__":res=talkRobot("你好!")
该功能主要将对话呼叫"自定义唤醒词" 获取的语音识别后=msg 输入函数获取回答。
单进程情形下将呼叫后的语音调用import pyttsx3 模块可进行朗读回答
如何构建多模态系交互系统?
结合手势检测和视频画面显示(问答广告、图片问答)的应用方法构建中。。。。
自动语音对话系统 Python实现相关推荐
- zabbix企业应用之自动语音报警平台
我从2013年5月开始研究zabbix,研究的版本是2.0.6,到现在也马上2年了,目前生产版本还是2.0.6. 现在我公司1000+的服务器无论是物理机还是vmware.openstack的云主机. ...
- 【小白教程】基于树莓派的智能语音助手-python
[完整教程零基础]基于树莓派的智能语音助手-python 树莓派3b+.python3系统自带.百度语音识别与合成.调用图灵机器人(热词唤醒失败,可用snowboy) 1.Windows系统下[下载+ ...
- 语音对话系统的设计要点与多轮对话的重要性
这是阿拉灯神丁Vicky的第 008 篇文章 就从最近短视频平台的大妈与机器人快宝的聊天说起吧. 某银行内,一位阿姨因等待办理业务的时间太长,与快宝机器人展开了一场来自灵魂的对话.对于银行工作人员的不 ...
- 科大讯飞成为北京 2022 年冬奥会和冬残奥会官方自动语音转换与翻译独家供应商
2019 年 9 月 16 日,北京 2022 年冬奥会和冬残奥会官方自动语音转换与翻译独家供应商发布会在北京冬奥组委园区举行.科大讯飞股份有限公司正式成为北京 2022 年冬奥会和冬残奥会官方自动语 ...
- 方正畅听 文字识别自动语音朗读软件
方正畅听是一款基于科大讯飞语音合成技术开发的免费文字识别自动语音朗读软件,它可以帮您把任何文本文字转换成语音朗读,看书变成听书,支持朗读RTF.TXT.DOC.PDF.HTML等类型的文本,本次发布的 ...
- python测试开发教程 龙腾_龙腾源码网京东 有货自动下单,Python 脚本 你的口罩...
本帖最后由 小朋友 于 2020-2-7 13:24 编辑 这个 githubcom/tychxn/jd-assistant 我写了个 Windows下的一键安装Python运行环境和安装依赖库的脚本 ...
- 如何建立自动语音问卷外呼系统
原文地址 http://wiki.astercc.com/doku.php?id=zh:%E7%94%A8%E9%80%94%E5%92%8C%E6%A1%88%E4%BE%8B:%E4%BD%BF% ...
- 自动语音播报WinCC报警消息
文章转载至微信公众号:人机常情 WinCC 自动语音播报WinCC报警消息 原创 He havefun 人机常情 WinCC 3月3日 作者:胡世川 - 西门子数字化工业集团自动化部 实现思路: 实时 ...
- java语音播报天气_Home Assistant系列 -- 自动语音播报天气
在树莓派上要让 Home Assistant 发声朗读 ,从硬件上我们需要 3.5mm插口音箱(耳机)或usb口音箱(耳机).软件方面 我们需要一个媒体播放器以及 tts ( 将文字转化为语音的服务 ...
最新文章
- 【水】JSOI完美的对称
- Git 常用命令总结
- 使用了这个神器,让我的代码bug少了一半
- 【BLE MIDI】推荐一个 Android 平台开源 MIDI 软件 MidiSheetMusic ( 相关资料 | Android Studio 中导入 Eclipse 源码 )
- 关闭Apache的目录浏览功能
- 后台(27)——文件上传
- ui-router 1.0 001 - resolve, component, sref-active
- 如何将lnmp 0.5里面的php5.2.14升级到php 5.3.3???
- MSP430杂谈--delay_cycles的精准延时
- 第 2 章 设计模式七大原则
- MVPArms官方快速组件化方案开源,来自5K star的信赖
- MMKV_MMKV - 由微信开发的高效,小巧的移动端key-value存储框架,适用于iOS和Android...
- 计算机网络自顶向下方法 第四章 作业习题答案
- 计算机自检报错无法开机,电脑开机不自检无显示是怎么回事?
- curl实现自动重启飞鱼星VW1900路由器
- go module 详解
- java手机版头文字d_头文字D THE ARCADE
- My深度学习的总结记录
- python常量基本类型有哪些_【Python③】python基本数据类型,变量和常量
- Vue(3)之 过滤器