百度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开放平台,语音识别,语音合成以及短文本相似度的更多相关文章

  1. 百度AI开放平台- API实战调用

    百度AI开放平台- API实战调用 一.      前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...

  2. selenium自动化 | 借助百度AI开放平台识别验证码登录职教云

    #通过借助百度AI开放平台识别验证码登录职教云 from PIL import Image from aip import AipOcr import unittest # driver.get(zj ...

  3. 基于百度AI开放平台的人脸识别及语音合成

    基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...

  4. 百度AI开放平台 UNIT平台开发在线客服 借助百度的人工智能如何开发一个在线客服系统

    这段时间在研究一些人工智能的产品,对比了国内几家做人工智能在线客服的,有些接口是要收费的,有些是免费的,但是做了很多限制,比如每天调用的接口次数限制是100次.后来就找到了百度的AI,大家也知道,目前 ...

  5. 百度AI开放平台 情感倾向分析实例以及gbk编码解决

    f=open('test.txt','a+',encoding='utf-8') for index,row in cxzg.iterrows(): text=str(row['text']) tex ...

  6. 腾讯AI开放平台的使用

    一.腾讯AI开放平台 https://ai.qq.com/ 二.腾讯AI平台支持的功能 三.签名机制 1.计算步骤 用于计算签名的参数在不同接口之间会有差异,但算法过程固定如下4个步骤. 1.将< ...

  7. 百度 LBS 开放平台,开发人员众測计划正式启动

    Hi各位亲爱滴开发人员:   你是否以前-- 期望第一时间率先接触到百度LBS开放平台的最新功能? 期望被邀请作为最最尊贵的首批试用志愿者感受志愿者的特权? 期望自己的意见被产品经理採纳.优化功能.从 ...

  8. java通过百度AI开发平台提取身份证图片中的文字信息

    废话不多说,直接上代码... IdCardDemo.java package com.wulss.baidubce; import java.io.BufferedReader; import jav ...

  9. 微信小程序,天气预报(百度地图开放平台API)

    小程序看似一种全新的东西,但好在基本上就是曾经HTML,CSS,JS的一个微变版本. 语法和之前一样.只是一些用法和名字(标签)发生了一些变化. 小程序主要就四种扩展名的文件:js,json,wxml ...

随机推荐

  1. Opencv目标跟踪—CamShift算法

    CamShift算法全称是"Continuously Adaptive Mean-Shift"(连续的自适应MeanShift算法),是对MeanShift算法的改进算法,可以在跟 ...

  2. Matlab Tricks(三十) —— 任意区间的均匀分布

    matlab 的内置函数 rand返回的是 0-1 区间上的均匀分布,rand的参数多是用于设置返回的矩阵的维度大小. 如果要得到 (a, b) 区间上的均匀分布,只需对其做简单的线性变换即可: a+ ...

  3. Bit error testing and training in double data rate (ddr) memory system

    DDR PHY interface bit error testing and training is provided for Double Data Rate memory systems. An ...

  4. make 的参数

    1. -j -j(表示 job 的数目)参数可以对项目在进行并行编译,比如在一台双核的机器上,完全可以用 make -j4,让make 最多允许 4 个编译命令同时执行,这样可以更有效的利用 CPU ...

  5. Linux 网络编程——TCP

    环境:Linux  C   一.协议介绍      TCP是面向连接的协议,提供可靠的数据传输:TCP协议的可靠传输基于三次握手.四次挥手以及确认重传机制实现.下面来具体展示下TCP的三次握手.四次挥 ...

  6. 距离北京奥运还有359天,发布WPF版本的北京2008标志(下)

    原文:距离北京奥运还有359天,发布WPF版本的北京2008标志(下) 图片显示效果:  XAML代码: <Viewbox Width="463.548828" Height ...

  7. 跟我学ASP.NET MVC之九:SportsStrore产品管理

    摘要: 在这篇文章中,我将继续完成SportsStore应用程序,让站点管理者可以管理产品列表.我将添加创建.修改和删除产品功能. 本篇文章将分模块的方式,逐个介绍SportsStore站点管理功能的 ...

  8. Asp.NET的目的是学习

    一.概观 二.具体介绍 1.Request对象 Request对象是用来获取client在请求一个页面或传送一个Form时提供的全部信息.这包含可以标识浏览器和用户的HTTP变量.存储在client的 ...

  9. WPF 中动态创建和删除控件

    原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.容器控件.FindName(" ...

  10. qt 透明度设置(setWindowOpacity 和 setAutoFillBackground 和 带透明度的画刷填充就好了)

    1,父窗口透明// 设置背景图片 QPalette pa;setAutoFillBackground(true);pa.setBrush(QPalette::Background,QBrush(QPi ...