准备以下模块中的函数

from aip import AipSpeech

import time

import os

import requests

APP_ID = '15420654'

API_KEY = 'lHlfGfZyH3pDXqKxQnjZtyBl'

SECRET_KEY = 'CLWhR7yoALWV8dFHNWaKGbuyH1cRgQpq'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

def get_file_content(filePath):

# 将文件转换为百度ai接口需要的pcm格式, 使用ffmpeg格式工厂

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(filePath):

# 识别本地文件

res = client.asr(get_file_content(filePath), 'pcm', 16000, {

'dev_pid':1536,

})

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

})

if not isinstance(result, dict):
with open(filename, 'wb') as f:
f.write(result)
return filename

def to_tuling(text):

# 向图灵机器人接口发送转换好的文本

url = 'http://openapi.tuling123.com/openapi/api/v2'

data = {

"reqType": 0,

"perception": {

"inputText": {

"text": text

},

},

"userInfo": {

"apiKey": "8931057699874d7994145e6d8b0bab1a",

"userId": "1"

}

}

res = requests.post(url, json=data)

text = res.json().get('results')[0].get('values').get('text')

return text

Flask app############################################################

from flask import Flask, render_template, request, send_file, jsonify

import ai4

from uuid import uuid4

app = Flask(name)

@app.route('/')

def index():

return render_template('index.html')

@app.route('/ai', methods=['POST'])

def ai():

# 接收前端传送的二进制流

audio = request.files.get('record')

filename = f"{uuid4()}.wav"

audio.save(filename)

# 将二进制流音频文件,转换为text

q_text = ai4.audio2text(filename)

# 将q_text发送给图灵机器人进行回答

a_text = ai4.to_tuling(q_text)

# 将a_text答案发送给百度合成音频文件

a_file = ai4.text2audio(a_text)

return jsonify({'filename': a_file})

@app.route('/get_audio/')

def send_audio(filename):

return send_file(filename)

if name == 'main':

app.run(host='0.0.0.0', port=9527, debug=True)

最新文章

  1. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
  2. 机器学习实战笔记(Python实现)-00-readme
  3. bootstrap源码分析之form、navbar
  4. tar等
  5. C#操作XML(读XML,写XML,更新,删除节点,与dataset结合等)【转载】
  6. Python文件格式化写入
  7. unity, sprite atlas
  8. iOS 通过代码关闭应用程序
  9. android中选择控件与选择界面自然过度效果的实现--一种新的交互设计
  10. 大数据分析神兽麒麟(Apache Kylin)
  11. 高效实现 std::string split() API
  12. hdu1301 Jungle Roads (Prim)
  13. eclipse for mac 快捷键
  14. Redis MSET的极限在哪里
  15. 基于hi-nginx的web开发(python篇)——使用jinja2模板引擎
  16. treeview调用数据库成树
  17. Python-web应用 +HTTP协议 +web框架
  18. Kali学习笔记25:Arachni使用(实现分布式扫描)
  19. Lodop控件NewPage();测试输出空白页
  20. zookeeper的作用

热门文章

  1. js中的DOM对象 和 jQuery对象 比较
  2. Python——用socket和线程实现全双工收发数据
  3. s5pv210移植Minigui3.0.12
  4. cocos2d 3.3 安装教程
  5. CF912D Fishes 期望
  6. java.sql.Date/ java.util.Date/ java.util.Calendar 用法与区别
  7. HashMap的容量大小增长原理(JDK1.6/1.7/1.8)
  8. C语言使用指针表示数组的注意事项
  9. Visible Ops
  10. tomcat使用不同的jdk版本 liunx 装两个jdk