默认有python环境
1.去官方申请api接口
2.安装websocket-client
3.代码如下(最后是pcm转wav格式):

# -*- coding:utf-8 -*-
#
#   author: Sun
#
import _thread as thread
import base64
import datetime
import hashlib
import hmac
import wave
import json
import os
import ssl
from datetime import datetime
from time import mktime
from urllib.parse import urlencode
from wsgiref.handlers import format_date_time
import time
import websocketSTATUS_FIRST_FRAME = 0  # 第一帧的标识
STATUS_CONTINUE_FRAME = 1  # 中间帧标识
STATUS_LAST_FRAME = 2  # 最后一帧的标识class Ws_Param(object):# 初始化def __init__(self, APPID, APIKey, APISecret, Text):self.APPID = APPIDself.APIKey = APIKeyself.APISecret = APISecretself.Text = Text# 公共参数(common)self.CommonArgs = {"app_id": self.APPID}# 业务参数(business),更多个性化参数可在官网查看self.BusinessArgs = {"aue": "raw", "auf": "audio/L16;rate=16000", "vcn": "xiaoyan", "tte": "utf8"}self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-8')), "UTF8")}#使用小语种须使用以下方式,此处的unicode指的是 utf16小端的编码方式,即"UTF-16LE"”#self.Data = {"status": 2, "text": str(base64.b64encode(self.Text.encode('utf-16')), "UTF8")}# 生成urldef create_url(self):url = 'wss://tts-api.xfyun.cn/v2/tts'# 生成RFC1123格式的时间戳now = datetime.now()date = format_date_time(mktime(now.timetuple()))# 拼接字符串signature_origin = "host: " + "ws-api.xfyun.cn" + "\n"signature_origin += "date: " + date + "\n"signature_origin += "GET " + "/v2/tts " + "HTTP/1.1"# 进行hmac-sha256进行加密signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'),digestmod=hashlib.sha256).digest()signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8')authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % (self.APIKey, "hmac-sha256", "host date request-line", signature_sha)authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')# 将请求的鉴权参数组合为字典v = {"authorization": authorization,"date": date,"host": "ws-api.xfyun.cn"}# 拼接鉴权参数,生成urlurl = url + '?' + urlencode(v)# print("date: ",date)# print("v: ",v)# 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致# print('websocket url :', url)return urldef on_message(ws, message):try:message =json.loads(message)code = message["code"]sid = message["sid"]audio = message["data"]["audio"]audio = base64.b64decode(audio)status = message["data"]["status"]print(message)if status == 2:print("ws is closed")ws.close()if code != 0:errMsg = message["message"]print("sid:%s call error:%s code is:%s" % (sid, errMsg, code))else:with open(output_pcm, 'ab') as f:f.write(audio)except Exception as e:print("receive msg,but parse exception:", e)# 收到websocket错误的处理
def on_error(ws, error):print("### error:", error)# 收到websocket关闭的处理
def on_close(ws):print("### closed ###")# 收到websocket连接建立的处理
def on_open(ws):def run(*args):d = {"common": wsParam.CommonArgs,"business": wsParam.BusinessArgs,"data": wsParam.Data,}d = json.dumps(d)print("------>开始发送文本数据")ws.send(d)if os.path.exists(output_pcm):os.remove(output_pcm)thread.start_new_thread(run, ())if __name__ == "__main__":#时间以秒为单位,下面一句话print("开始时间"+str(time.time()))input_txt = "我命由我不由天"output_pcm = "C:\\Users\\S\\Desktop\\11111\\MP3\\1.pcm"output_wav = "C:\\Users\\S\\Desktop\\11111\\MP3\\1.wav"wsParam = Ws_Param(APPID='###', APISecret='###',APIKey='###',Text=input_txt)websocket.enableTrace(False)wsUrl = wsParam.create_url()ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close)ws.on_open = on_openws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})print("pcm合成结束时间"+str(time.time()))with open(output_pcm, 'rb') as pcmfile:pcmdata = pcmfile.read()with wave.open(output_wav, 'wb') as wavfile:wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE'))wavfile.writeframes(pcmdata)print("转wav结束时间"+str(time.time()))

科大讯飞语音合成python版相关推荐

  1. 调用阿里云语音合成Python版SDK

    一.阿里云介绍   阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,致力于以在线公共服务的方式,提供安全.可靠的计算和数据处理能力,让计算和人工智能成为普惠科技.阿里云服务着制造.金融. ...

  2. 调用科大讯飞语音合成离线SDK的基础上调用pyqt5模块编写gui界面

    程序说明 该程序是继我上一次调用科大讯飞语音合成离线SDK,用Python写了一个文本转语音的程序的进一步开发,这次开发是用pyqt5模块和其自带的designer做了一个gui界面. 程序展示 该程 ...

  3. Vue+SpringBoot+Audio+科大讯飞 语音合成技术

    最终思路 思路就是vue前端向后台发送需要播放的语音信息(文字),然后后台返回语音流数据,通过URL.createObjectURL(data) 这个API生成一个URL,然后给audio标签附上ur ...

  4. 【Leetcode】刷题之路3(python版)

    回溯专题 1.回溯算法的本质是n叉树的深度优先搜索,同时,需要注意剪枝减少复杂度. 2.回溯算法三部曲 确定参数和返回值 回溯函数终止条件 单层循环 3.回溯法思路 回溯法是一种算法思想,而递归是一种 ...

  5. 统计学习圣经!经典教材《统计学习导论》Python版

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 编辑:张倩,来源:机器之心 <统计学习导论>很经典,但习题用 ...

  6. python数据结构与算法分析_数据结构与算法(Python版)

    为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...

  7. 经典教材《统计学习导论》现在有了Python版

    来源:机器之心 本文约1000字,建议阅读5分钟 <统计学习导论>很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现. 斯坦福经典教材<The Element o ...

  8. 赞!经典教材《统计学习导论》终于有Python版了

    <统计学习导论>是数据科学家中最受欢迎的书籍之一,旨在介绍机器学习算法背后的概念,但这本书的习题都是用R语言实现的,这对于主要使用 Python 语言的机器学习研究者来说不太友好. 为了解 ...

  9. Manning大神牵头,斯坦福开源Python版NLP库Stanza:涵盖66种语言

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 转自:机器之心 对于斯坦福 NLP 库,我们一定不会陌生,但是这一库主要基于 Java ...

  10. 【重磅】Python版《统计学习导论》来啦!附代码链接!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 <统计学习导论>很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实 ...

最新文章

  1. pthread中如何追踪stack over flow
  2. mysql 添加外键时 error 150 问题总汇
  3. superset可视化-Force-directed graph(力导引图)
  4. 火热的云计算,你知道这些吗?
  5. Python练习:期末测评
  6. Web-HTML特殊符号的表示
  7. Leetcode每日一题:941.valid-mountain-array(有效的山脉数组)
  8. AcWing 786. 第k个数
  9. HTML+JS 写一个 个人博客(初学版)
  10. logogogo最新变种XP.exe的分析(Win32.Logogo)
  11. 钽电容、贴片铝电解电容、二极管等正负极判断
  12. 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容柒哥都给你总结在这儿了...
  13. 周鸿祎谈乔布斯(张亮)
  14. 国内缺少一个slideshare
  15. 项目反应理论 matlab,IRTPRO | 项目反应理论软件
  16. 常用存储芯片-笔记本上固态硬盘PTS11系列推荐
  17. Android招行一网通对接
  18. 【苹果群发推iMessage苹果推】位置推在(delegate) 收到connectionDidFinishLoading
  19. simulink仿真之比较产生阶梯波
  20. 鸿蒙的法则之力,鸿蒙之力,恐怖如斯

热门文章

  1. 科锐c语言,科锐C语言学习视频,资源教程下载
  2. 数据结构与算法 c语言6,C语言程序设计题库之6.doc
  3. 华为端口聚合命令_华为汇聚交换机链路聚合配置命令
  4. python代码转java工具_Python代码转为java代码?
  5. csdn代码区的代码不变颜色?
  6. Android超级好看的动态登陆界面(附有详细代码)
  7. ofo启示 | 创业企业为何大多熬不过五年?
  8. Python Lex Yacc手册
  9. [N1盒子] Phicomm-N1 斐讯 N1 NAS 打造指南
  10. C语言谭浩强编程错误归纳