百度AI开放平台,语音识别,语音合成以及短文本相似度
百度AI开放平台:https://ai.baidu.com/
语音合成
from aip import AipSpeech
APP_ID="" #'你的 App ID'
API_KEY="6bPrLnkguN5ltxvfxRYP96Hk" #'你的 Api Key'
SECRET_KEY="ckSFGccmaGr0b2EPGE3dueb1PkfW5IsW" #'你的 Secret Key' client=AipSpeech(APP_ID,API_KEY,SECRET_KEY) result=client.synthesis("快乐的池塘里面有只小青蛙,呱呱呱儿 ","zh",1,{
"vol":5, #音量
"spd":4, #语速
"pit":7, #语调
"per":1 #音色(0,1,3,4)
})
print(result) if not isinstance(result,dict):
with open("audio.mp3","wb") as f:
f.write(result)
语音识别
from aip import AipSpeech
import os """ 你的 APPID AK SK """
APP_ID=""
API_KEY="6bPrLnkguN5ltxvfxRYP96Hk"
SECRET_KEY="ckSFGccmaGr0b2EPGE3dueb1PkfW5IsW" client=AipSpeech(APP_ID,API_KEY,SECRET_KEY) # 读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read() # 识别本地文件
res=client.asr(get_file_content('wb.m4a'), 'pcm', 16000, {
'dev_pid': 1536,
}) print(res.get("result")[0])
学说话
from aip import AipSpeech
import os
import time """ 你的 APPID AK SK """ APP_ID=""
API_KEY="6bPrLnkguN5ltxvfxRYP96Hk"
SECRET_KEY="ckSFGccmaGr0b2EPGE3dueb1PkfW5IsW" client=AipSpeech(APP_ID,API_KEY,SECRET_KEY) ############语音识别##########
#读取文件
def get_file_content(filePath):
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() # 识别本地文件
def audio2text(filename):
res=client.asr(get_file_content(filename), 'pcm', 16000, {
'dev_pid': 1536,
})
return res.get("result")[0] ############语音合成#########
def text2audio(getedtext):
filename = f"{time.time()}.mp3"
result = client.synthesis(getedtext, "zh", 1, {
"vol": 5,
"spd": 4,
"pit": 7,
"per": 0
}) if not isinstance(result, dict):
with open(filename, "wb") as f:
f.write(result)
return filename getedtext=audio2text("wb.m4a") res=text2audio(getedtext) os.system(res)
语音回答问题
from aip import AipSpeech
import os
import time """ 你的 APPID AK SK """ APP_ID=""
API_KEY="6bPrLnkguN5ltxvfxRYP96Hk"
SECRET_KEY="ckSFGccmaGr0b2EPGE3dueb1PkfW5IsW" client=AipSpeech(APP_ID,API_KEY,SECRET_KEY) ############语音识别##########
#读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read() # 识别本地文件
def audio2text(filepath):
res = client.asr(get_file_content(filepath), 'pcm', 16000, {
'dev_pid': 1536,
})
return res.get("result")[0] filename = f"{time.time()}.mp3"
############语音合成#########
def text2audio(getedtext): result = client.synthesis(getedtext, "zh", 1, {
"vol": 5,
"spd": 4,
"pit": 7,
"per": 1
})
# print(result) if not isinstance(result, dict):
with open(filename, "wb") as f:
f.write(result)
getedtext=audio2text("wb.m4a") text2audio(getedtext) os.system(filename)
短文本相似度
from aip import AipSpeech,AipNlp
import os
import time """ 你的 APPID AK SK """ APP_ID=""
API_KEY="6bPrLnkguN5ltxvfxRYP96Hk"
SECRET_KEY="ckSFGccmaGr0b2EPGE3dueb1PkfW5IsW" client=AipSpeech(APP_ID,API_KEY,SECRET_KEY)
nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY) ############语音识别##########
#读取文件
def get_file_content(filePath):
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() # 识别本地文件
def audio2text(filename):
res=client.asr(get_file_content(filename), 'pcm', 16000, {
'dev_pid': 1536,
})
return res.get("result")[0] ############语音合成#########
def text2audio(getedtext):
filename = f"{time.time()}.mp3"
result = client.synthesis(getedtext, "zh", 1, {
"vol": 5,
"spd": 4,
"pit": 7,
"per": 0
}) if not isinstance(result, dict):
with open(filename, "wb") as f:
f.write(result)
return filename ##########图灵################
def to_tuling(text):
import requests args = {
"reqType": 0,
"perception": {
"inputText": {
"text": text
}
},
"userInfo": {
"apiKey": "e963f65c4c7a466a80e5aaa3510da2fa",
"userId": ""
}
} url = "http://openapi.tuling123.com/openapi/api/v2" res = requests.post(url, json=args)
print(res)
text = res.json().get("results")[0].get("values").get("text") print("图灵答案",text)
return text ###########调用################ getedtext=audio2text("wb.m4a") if nlp.simnet("你叫什么名字",getedtext).get("score")>=0.68:
getedtext="我才不告诉你呢,你个糟老头子坏得很"
else:
getedtext=to_tuling(getedtext) res=text2audio(getedtext) os.system(res)
对话机器人玩具
应用结构:
在index.html中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</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="application/javascript" src="/static/Recorder.js"></script>-->
<script type="application/javascript" src="https://cdn.bootcss.com/recorderjs/0.1.0/recorder.js"></script>
<script type="text/javascript" src="/static/jQuery3.1.1.js"></script> <script type="text/javascript">
var reco = null;
var audio_context = new AudioContext();
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: "http://192.168.43.158:9527/ai",
type: 'post',
processData: false,
contentType: false,
data: formdata,
dataType: 'json',
success: function (data) {
document.getElementById("player").src ="http://192.168.43.158:9527/get_audio/" + data.filename
}
}); })
} </script>
</html>
在app.py中
from flask import Flask,render_template,request,jsonify,send_file
from uuid import uuid4
import baidu_ai app = Flask(__name__) @app.route("/")
def index():
return render_template("index.html") @app.route("/ai",methods=["POST"])
def ai():
# 1.保存录音文件
print(111)
audio = request.files.get("record")
print('audio',audio)
filename = f"{uuid4()}.wav"
audio.save(filename)
#2.将录音文件转换为PCM发送给百度进行语音识别
q_text = baidu_ai.audio2text(filename)
print(8585)
print(q_text)
#3.将识别的问题交给图灵或自主处理获取答案
a_text = baidu_ai.to_tuling(q_text)
print(a_text)
#4.将答案发送给百度语音合成,合成音频文件
a_file = baidu_ai.text2audio(a_text)
print(a_file)
#5.将音频文件发送给前端播放 return jsonify({"filename":a_file}) @app.route("/get_audio/<filename>")
def get_audio(filename):
print(filename)
return send_file(filename) if __name__ == '__main__':
app.run("0.0.0.0",9527,debug=True)
在baidu_ai.py中
from aip import AipSpeech,AipNlp
import time,os """ 你的 APPID AK SK """
APP_ID=""
API_KEY="6bPrLnkguN5ltxvfxRYP96Hk"
SECRET_KEY="ckSFGccmaGr0b2EPGE3dueb1PkfW5IsW" # client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) nlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) # 读取文件
def get_file_content(filePath):
print(234)
os.system(f"ffmpeg -y -i {filePath} -acodec pcm_s16le -f s16le -ac 1 -ar 16000 {filePath}.pcm")
print(354)
with open(f"{filePath}.pcm", 'rb') as fp:
return fp.read() def audio2text(filepath):
# 识别本地文件
print(123)
res = client.asr(get_file_content(filepath), 'pcm', 16000, {
'dev_pid': 1536,
})
print(456456)
print('----------res',res) return res.get("result")[0] 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 def to_tuling(text):
import requests args = {
"reqType": 0,
"perception": {
"inputText": {
"text": text
}
},
"userInfo": {
"apiKey": "e963f65c4c7a466a80e5aaa3510da2fa",
"userId": ""
}
} url = "http://openapi.tuling123.com/openapi/api/v2" res = requests.post(url, json=args)
print(res)
text = res.json().get("results")[0].get("values").get("text") print("图灵答案",text)
return text
百度AI开放平台,语音识别,语音合成以及短文本相似度的更多相关文章
- 百度AI开放平台- API实战调用
百度AI开放平台- API实战调用 一. 前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...
- selenium自动化 | 借助百度AI开放平台识别验证码登录职教云
#通过借助百度AI开放平台识别验证码登录职教云 from PIL import Image from aip import AipOcr import unittest # driver.get(zj ...
- 基于百度AI开放平台的人脸识别及语音合成
基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...
- 百度AI开放平台 UNIT平台开发在线客服 借助百度的人工智能如何开发一个在线客服系统
这段时间在研究一些人工智能的产品,对比了国内几家做人工智能在线客服的,有些接口是要收费的,有些是免费的,但是做了很多限制,比如每天调用的接口次数限制是100次.后来就找到了百度的AI,大家也知道,目前 ...
- 百度AI开放平台 情感倾向分析实例以及gbk编码解决
f=open('test.txt','a+',encoding='utf-8') for index,row in cxzg.iterrows(): text=str(row['text']) tex ...
- 腾讯AI开放平台的使用
一.腾讯AI开放平台 https://ai.qq.com/ 二.腾讯AI平台支持的功能 三.签名机制 1.计算步骤 用于计算签名的参数在不同接口之间会有差异,但算法过程固定如下4个步骤. 1.将< ...
- 百度 LBS 开放平台,开发人员众測计划正式启动
Hi各位亲爱滴开发人员: 你是否以前-- 期望第一时间率先接触到百度LBS开放平台的最新功能? 期望被邀请作为最最尊贵的首批试用志愿者感受志愿者的特权? 期望自己的意见被产品经理採纳.优化功能.从 ...
- java通过百度AI开发平台提取身份证图片中的文字信息
废话不多说,直接上代码... IdCardDemo.java package com.wulss.baidubce; import java.io.BufferedReader; import jav ...
- 微信小程序,天气预报(百度地图开放平台API)
小程序看似一种全新的东西,但好在基本上就是曾经HTML,CSS,JS的一个微变版本. 语法和之前一样.只是一些用法和名字(标签)发生了一些变化. 小程序主要就四种扩展名的文件:js,json,wxml ...
随机推荐
- less - 循环 loop
.avatar-loop(@n, @i:1, @level) when (@i <= @n) { &:nth-child(@{level}) .item.item-@{i} { .ava ...
- SQL Server如何使用OPENQUERY访问另一个SQL Server
在项目中,经常会遇到一个数据库访问另一个数据库,[CNVFERPDB]为服务器名,[CE3]为库名 SELECT Dtl.* FROM CNVFERPDB. CE3.ce3.ZTLE0125 Dtl ...
- ADO.NET - 批量更新或添加数据
方法一:使用SqlBulkCopy实现批量更新或添加数据. SqlBulkCopy类一般只能用来将数据批量插入打数据库中,如果数据表中设置了主键,出现重复数据的话会报错,如果没有设置主键,那么将会添加 ...
- uva 11552 Fewest Flops 线性dp
// uva 11552 Fewest Flops // // 二维线性dp // // 首先,在该块必须是相同的来信.首先记录每块有很多种书 // 称为是counts[i]; // // 订购f[i ...
- SQL SERVER配置[转]
感谢shuhao,sql server的配置都是他教的,下面是他写的总结,方便自己以后使用 总结一下,感觉比较实用.------------------------------------------ ...
- twemproxy
twemproxy架构分析——剖析twemproxy代码前编 twemproxy背景 在业务量剧增的今天,单台高速缓存服务器已经无法满足业务的需求, 而相较于大容量SSD数据存储方案,缓存具备速度 ...
- 简明Python3教程 14.输入输出
简介 一些情况下你不得不让程序与用户进行交互.例如,你需要从用户处得到输入然后输出计算结果.我们可以分别通过input()和print()函数做到这些. 对于输出,我们还可以使用str(string) ...
- WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件
原文:WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件 版权声明:本文为博主原创文章,需要转载尽管转载. https://blog.csdn.net/z ...
- 【C++智能指针 auto_ptr】
<More Effective C++>ITEM M9他提到auto_ptr.说是当异常产生的时候.怎么释放为对象分配的堆内存,避免反复编写内存释放语句. PS:这里书里面提到函数退出问题 ...
- nginx配置http跳转https
配置相当简单,在配置文件头部加一行,如下: server { listen *:;//监听80端口 https://www.chenruhui.com$request_uri;//需要跳转的网页 } ...