人工智能-基于百度baidu-ai和图灵机器人实现学说话机器人
本文引用了2个js文件,这里提供下CDN资源,!
<script type="application/javascript" src="https://cdn.bootcss.com/recorderjs/0.1.0/recorder.js"></script>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
功能介绍:
1.点击页面上的''录制语音指令'',然后开始说话,不要超过60秒;
2.说完,点击页面上的''发送语音指令'',系统会重复一遍你说的话(合成后的声音,不在是你原来声音)
前段代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"> </head>
<body>
<audio controls autoplay id="player"></audio>
<p><button onclick="start_reco()" style="background-color: yellow">录制语音指令</button></p>
<p><button onclick="stop_reco_audio()" style="background-color: blue">发送语音指令</button></p>
</body>
<script type="text/javascript" src='{{ url_for('static',filename='js/jquery.js') }}'></script>
<script type="text/javascript" src='{{ url_for('static',filename='js/recorder.js') }}'></script> <script type="text/javascript">
var reco = null;
var audio_context = new AudioContext();
var base_url = 'http://192.168.13.21:5400'; navigator.getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia); navigator.getUserMedia({audio: true}, create_stream, function (err) {
console.log(err)
}); function create_stream(user_media) {
var stream_input = audio_context.createMediaStreamSource(user_media);
reco = new Recorder(stream_input);
}
// 录制语音指令
function start_reco() {
reco.record();
} // 发送语音指令
function stop_reco_audio() {
reco.stop();
send_audio();
reco.clear();
} function send_audio() {
reco.exportWAV(function (wav_file) {
var formdata = new FormData();
formdata.append("record", wav_file);
console.log(formdata);
$.ajax({
url: base_url+"/ai",
type: 'post',
processData: false,
contentType: false,
data: formdata,
dataType: 'json',
// 自动播放语音
success: function (data) {
document.getElementById("player").src =base_url+"/get_audio/" + data.filename
}
}); })
} </script>
</html>
后端代码:
app.py
from flask import Flask,render_template,request,jsonify,send_file
from uuid import uuid4
import s4_5 app = Flask(__name__,static_folder='static') @app.route("/")
def index():
return render_template("index.html") @app.route("/ai",methods=["POST"])
def ai():
# 1.保存录音文件
audio = request.files.get("record")
filename = f"{uuid4()}.wav"
audio.save(filename) #2.将录音文件转换为PCM发送给百度进行语音识别
q_text = s4_5.audio2text(filename) #3.将识别的问题交给图灵或自主处理获取答案
a_text = s4_5.to_tuling(q_text) #4.将答案发送给百度语音合成,合成音频文件
a_file = s4_5.text2audio(a_text) #5.将音频文件发送给前端播放
return jsonify({"filename":a_file}) @app.route("/get_audio/<filename>")
def get_audio(filename):
return send_file(filename) if __name__ == '__main__':
# 注意前后端保持一致o!
app.run("0.0.0.0",5400,debug=True)
s4_5.py
from aip import AipSpeech,AipNlp
import time,os APP_ID = ''
APP_KEY = 'DhXGtWHYMujMVZZGRI3a7rzb'
SECRET_KEY = 'PbyUvTL31fImGthOOIP5ZbbtEOGwGOoT' # 与百度进行一次加密校验,认证你是合法用户合法的应用
# AipSpeech是百度语音的客户端,认证成功之后,客户端将被开启,这里的client就是已经开启的百度语音的客户端了
client = AipSpeech(APP_ID, APP_KEY, SECRET_KEY)
# 自然语言处理
nlp = AipNlp(APP_ID, APP_KEY, SECRET_KEY) # 1.将wma格式文件转为pcm格式文件
def get_file_content(filePath):
# 执行cmd命令os.system()
os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm")
with open(f"{filePath}.pcm", 'rb') as fp:
return fp.read() # 2.将音频转成文字
def audio2text(filepath):
# 识别本地文件
res = client.asr(get_file_content(filepath), 'pcm', 16000, {
# 不填写lan参数生效,都不填写,默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格
'dev_pid': 1536,
})
# res.get("result")[0])
# 将录音转成文字,然后返回
return res.get("result")[0] # 3.将文字转成音频
def text2audio(text):
# 给合成的音频命名
filename = f"{time.time()}.mp3"
# 合成语音结果
result = client.synthesis(text, 'zh', 1, {
'vol': 5,
"spd": 3,
"pit": 7,
"per": 4
})
# 识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open(filename, 'wb') as f:
f.write(result)
return filename #4.图灵机器人
def to_tuling(text):
# 导入模块requests,发post请求
import requests
args = {
"reqType": 0,
"perception": {
"inputText": {
"text": text
}
},
"userInfo": {
"apiKey": "eaf3daedeb374564bfe9db10044bc20b",
"userId": ""
}
}
# 图灵机器人API接口
url = "http://openapi.tuling123.com/openapi/api/v2"
# 向图灵发起请求
res = requests.post(url, json=args)
# 将结果赋值给text
text = res.json().get("results")[0].get("values").get("text")
# 将test返回
return text
人工智能-基于百度baidu-ai和图灵机器人实现学说话机器人的更多相关文章
- Python人工智能-基于百度AI接口
参考百度AI官网:http://ai.baidu.com/ 准备工作: 支持Python版本:2.7.+ ,3.+ 安装使用Python SDK有如下方式 >如果已经安装了pip,执行 pip ...
- python预课06 基于百度大脑AI的人工智能,百度颜值检测,语音合成与识别
百度大脑: 如下图,百度开放了许多人工智能接口可以使用,先注册一个百度大脑账户 点击创建应用,选择需要的功能,如人脸识别,语音识别等 点击查看文档,可以查看功能对应语言的方法,参数.首先在CMD命令下 ...
- Flask&&人工智能AI -- 6 人工智能初识,百度AI,图灵机器人
一.人工智能初识,百度AI的创建与应用 参考连接:https://www.cnblogs.com/xiao987334176/p/9620113.html 1. 百度ai开放平台 2. AipSpee ...
- 人工智能初识(百度ai)
目前的人工智能做了什么? 语音识别:小米的小爱同学,苹果的siri,微软的Cortana语音合成:小米的小爱同学,苹果的siri,微软的Cortana图像识别:交通摄像头拍违章,刷脸解锁手机等视频识别 ...
- python 全栈开发,Day122(人工智能初识,百度AI)
一.人工智能初识 什么是智能? 我们通常把人成为智慧生物,那么”智慧生物的能力”就是所谓的”智能”我们有什么能力?听,说,看,理解,思考,情感等等 什么是人工智能? 顾名思义就是由人创造的”智慧能力” ...
- 基于百度AI开放平台的人脸识别及语音合成
基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...
- python基于百度AI开发文字识别
很多场景都会用到文字识别,比如app或者网站里都会上传身份证等证件以及财务系统识别报销证件等等 第一步,你需要去百度AI里去注册一个账号,然后新建一个文字识别的应用 然后你将得到一个API Key 和 ...
- 百度ai和图灵123实现简单的语音对话
百度ai和图灵123实现简单的语音对话
- 基于百度AI实现 车牌识别
前言 目前百度的AI接口相对完善,对于文字识别类的操作还需要开发者一一去尝试,去评估这效果到底是怎么的. 文字识别的接口相对简单,官方提供的SDK也集成很好,笔者只是在这上面做了一些前期性的功能数据校 ...
随机推荐
- UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 43: illegal multibyte sequence
[问题] python中已获取网页: http://blog.csdn.net/hfahe/article/details/5494895 的html源码,其时UTF-8编码的. 提取出其标题部分: ...
- Linux内核设计基础(五)之内存管理
我感觉学习操作系统首先要从内存分配和管理入手. 首先我们应该知道现代操作系统是以页为单位进行内存管理的,32位体系结构支持4KB的页.而64位体系结构支持8KB的页.页是用来分配的.怎样才干进行高效和 ...
- arm linux c++11编译
include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11 ...
- nodejs 命令行交互
人机交互 function readSyncByfs(tips) { tips = tips || '> '; process.stdout.write(tips); process.stdin ...
- SpringCloud系列十二:手动创建Feign
1. 回顾 上文讲解了自定义Feign.但是在某些场景下,前文自定义Feign的方式满足不了需求,此时可使用Feign Builder API手动创建Feign. 本文围绕以下场景,为大家讲解如何手动 ...
- php学习网站推荐
http://nikic.github.io/https://github.com/walu/phpbook http://www.chinaunix.net/ https://news.ycombi ...
- DMA (直接存储器访问)
DMA (直接存储器访问) 编辑 DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载.否 ...
- JavaScript Creating 对象
可通过多种方法在 JavaScript 中创建你自己的对象.可以直接实例化Object 对象 (JavaScript),然后添加你自己的属性和方法.或者可以使用对象文本表示法来定义你的对象.还可使用构 ...
- Python模块学习之fabric
fabric是一个运维经常使用到的一个模块.但是我在python3环境下安装fabric就遇到了坑! 安装包名称是fabric3而不是fabric! pip install fabric3 利用fab ...
- Unity3d中使用自带动画系统制作下雨效果(一)
之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...