Python调用科大讯飞语音合成离线SDK

Python调用科大讯飞语音合成离线SDK

  • 科大讯飞语音合成技术
    • 代码展示
      • 总结

科大讯飞语音合成技术

科大讯飞语音合成技术在国内是领先的,如果单纯想要Python语言对其进行编写,是不支持的。故我们可以采用对其离线C++语言的SDK进行调用,从而达到我们实现语音合成的目的。

代码展示

代码调用逻辑如下图所示
在这里插入图片描述
代码如下:

import ctypes
import wave
import time
from ctypes import cdll, c_int, byref, string_atframe_rate = 8000                 # 频率
MSP_SUCCESS = 0                   # 成功标识
MSP_TTS_FLAG_STILL_HAVE_DATA = 1
MSP_TTS_FLAG_DATA_END = 2         # 结束标识
MSP_TTS_FLAG_CMD_CANCELED = 4
"""
LoadLibrary: 将指定的模块加载到调用进程的地址空间中(C++)
MSPLogin: 初始化msc,用户登录
QTTSSessionBegin: 开始一次语音合成,分配语音合成资源
QTTSTextPut: 写入要合成的文本
QTTSAudioGet: 获取合成音频
QTTSSessionEnd: 结束本次语音合成
MSPLogout:  退出登录
"""# 登入科大讯飞离线语音合成SDK
def login(login_dll,login_params):dll=login_dllparams=login_params# ret为0时,则登入成功ret=dll.MSPLogin(None, None, params)if ret!=MSP_SUCCESS:print("登入失败")print(ret)else:print("登入成功")
# 开始一次语音合成,分配语音合成资源
def QTTS_Session_Begin(login_dll,session_begin_params):dll=login_dll# 将session_begin_params以指定的编码格式编码字符串,格式为utf-8session_begin_params_bytes = bytes(session_begin_params, 'UTF-8')# python中c语音int型error_code = c_int()# python中c语音char型dll.QTTSSessionBegin.restype = ctypes.c_char_psessionID = dll.QTTSSessionBegin(session_begin_params_bytes, byref(error_code))if error_code.value!=0 :print(f'调用失败,错误码 {error_code.value}')else:print("调用成功")return sessionID
# 写入要合成的文本
def QTTS_Text_PUT(login_dll,session_ID,text):dll = login_dll# 将text以指定的编码格式编码字符串,格式为utf-8text = text.encode('UTF-8')ret = dll.QTTSTextPut(session_ID, text, len(text), None)if ret!=MSP_SUCCESS:print("文本写入失败")else:print("文本写入成功")
# 获取合成音频
def QTTS_Audio_Get(login_dll,session_ID,wavFile):audio_len, synth_status, getret = c_int(), c_int(), c_int()dll = login_dlldll.QTTSAudioGet.restype = ctypes.c_void_ppdata = bytes()while True:pdata = dll.QTTSAudioGet(session_ID, byref(audio_len),byref(synth_status), byref(getret))# print(getret.value)# print(synth_status.value)if getret.value != MSP_SUCCESS:breakif pdata:data = string_at(pdata, audio_len.value)# 将wav_data转换为二进制数据写入文件wavFile.writeframes(data)if synth_status.value == MSP_TTS_FLAG_DATA_END:breaktime.sleep(0.1)  # 这里为官方建议,可以去除不使用,避免转换时间过长wavFile.close()
#结束本次语音合成
def QTTS_Session_End(login_dll,session_ID):dll = login_dlldll.QTTSSessionEnd(session_ID, "Normal")dll.MSPLogout()if __name__=='__main__':# 调用科大讯飞离线SDKlogin_dll=cdll.LoadLibrary(r"D:\opencv\test_yuyin\Windows_aisound_exp1226_6e05e282\bin\msc_x64.dll")# 账号登入login_params = b"appid = 6e05e282, work_dir = ."# 参数填写,实际参数去以下官网#https: // www.xfyun.cn / doc / mscapi / Windows & Linux / wlapi.html  # qtts-h-%E8%AF%AD%E9%9F%B3%E5%90%88%E6%88%90session_begin_params = "engine_type=local, voice_name=xiaoyan, text_encoding=utf8, tts_res_path=fo|D:\\opencv\\test_yuyin\\Windows_aisound_exp1226_6e05e282\\bin\\msc\\res\\tts\\xiaoyan.jet;fo|D:\\opencv\\test_yuyin\\Windows_aisound_exp1226_6e05e282\\bin\\msc\\res\\tts\\common.jet, sample_rate=8000, speed=50, volume=80, pitch=50, rdn=2, effect=0, speed_increase=1, rcn=1"# 文本输入text=("终于调用成功了")login(login_dll, login_params)session_ID=QTTS_Session_Begin(login_dll, session_begin_params)QTTS_Text_PUT(login_dll, session_ID, text)# 1、打开WAV文档wavFile = wave.open(r"yuyin_Y.wav", "wb")# 2、配置声道数、量化位数和取样频率wavFile.setnchannels(1)wavFile.setsampwidth(2)wavFile.setframerate(frame_rate)QTTS_Audio_Get(login_dll,session_ID,wavFile)QTTS_Session_End(login_dll, session_ID)

总结

编写该代码进行动态链接库调用时,需注意不同的编程语言之间存在数据格式差异,在Python中需调用ctypes模块来完成数据格式转换。ctypes模块官网有对该模块进行详细介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49751.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科大讯飞SDK下载

科大讯飞SDK下载 科大讯飞作为中国最大的智能语音技术提供商,在智能语音技术领域有着长期的研究积累,并在中文语音合成、语音识别、口语评测等多项技术上拥有国际领先的成果。今天就带领大家初涉科大讯飞,成为科大讯飞语音开发者。 本文只介绍…

详解科大讯飞语音识别

公司的项目要用到一个语音识别所以就弄了一下,国内的科大讯飞的名气比较响一些所以就选用了科大讯飞,废话不多说直接开干 1,下载sdk,注册获取APPid,这都不废话,需要什么就下载什么 2,把下载的…

百度移动端和PC蜘蛛的区别

百度移动端和PC蜘蛛分别是什么,如何让百度做到针对性抓取 众所周知,百度蜘蛛大体上分为百度移动端蜘蛛和百度PC端蜘蛛,百度移动端和百度PC端蜘蛛又可分为百度高权重蜘蛛、百度低权重蜘蛛(百度官方并没有承认的)以及百…

百度蜘蛛的抓取方式有哪些

做seo的人都知道,百度蜘蛛对网站的抓取是间歇性的,需要根据网站的质量、网站的权重以及网站类型的大小,来决定抓取的频率。百度蜘蛛最喜欢的就是抓取网站文章了,所以网站需要保持每日的文章更新。那么百度蜘蛛的抓取方式有哪些呢&…

360浏览器模拟百度搜索引擎蜘蛛访问

一般用在网站被挂马以后,直接访问没有问题,可以通过模拟百度或其他搜索引擎来访问,即可发现问题。比如下面的例子,直接访问没问题,使用模拟搜索引擎访问即可发现问题。 比如访问一个针对搜索引擎挂马的网页&#xff1…

百度蜘蛛简介

百度蜘蛛简介 工作机制百度蜘蛛的工作要素百度蜘蛛原理的应用Baiduspider对一个网站服务器造成的访问压力如何?Baiduspider多长时间之后会重新抓取我的网页? 工作机制 百度蜘蛛的构建的原理。搜索引擎构建一个调度程序,来调度百度蜘蛛的工作…

百度蜘蛛IP段大全

百度蜘蛛(Baiduspider)爬取 进行网站日志分析的时候,常见到很多不同IP段的百度蜘蛛,为了方便大家更好的进行日志分析,下面列举了百度不同IP段常见蜘蛛的一些详情情况 121.14.89.*,此ip段为新站考察蜘蛛,通常有它光顾的…

元宇宙技术在几年后质变,迎来体验终端世界

京东集团高级副总裁、京东探索研究院院长陶大程京东集团高级副总裁、京东探索研究院院长陶大程是京东“产业元宇宙”的提出者和构建者。他谈到,希望通过构建元宇宙供应链降低实体经济参与数字经济的门槛,帮助实体经济完成数实融合的商业转型,…

元宇宙是怎样让虚拟与现实融合的?

在数字化不断推进的当下,如何将虚拟的数字世界和现实世界更好地融合,成为一个首要的目标。元宇宙正是这样一个利用多种信息技术,打造出了一个虚拟与现实高度融合的数字空间。在元宇宙中,用户不只是对数字内容的浏览、查看&#xf…

元宇宙的本质特征是五大融合

元宇宙的本质特征是五大融合:数字世界与物理世界的融合、数字经济与实体经济的融合、数字生活与社会生活的融合、数字资产与实物资产的融合、数字身份与现实身份的融合。元宇宙并非只是“虚拟空间”,发展元宇宙的关键是“融合”。 1.数字世界与物理世界…

chatgpt赋能python:Python界面表格:实现数据可视化的强大工具

Python界面表格:实现数据可视化的强大工具 在数据分析和可视化方面,表格一直是一个重要的工具。Python作为一种流行的编程语言,有着出色的表格处理和可视化能力。本文将介绍Python界面表格,并探索为什么它是一个强大的工具来实现…

GPT怎样教我用Python进行数据可视化

文章目录 GPT怎样教我用Python进行数据可视化matplotlibpyecharts总结 GPT怎样教我用Python进行数据可视化 🚀🚀首先,我们先看一下这段代码,这是我之前写来读取excel文件中xx大学在各个类别中的获奖情况,并保存在一个…

Tomcat-- 掌握汤姆猫,看这一篇文章就够了

文章目录 一、Tomcat是什么二、Tomcat下载安装三、Tomcat目录结构介绍四、启动Tomcat1.启动失败的原因 五、部署静态页面1.静态页面是什么2. 部署单个 HTML3.部署带有 CSS / JavaScript / 图片 的 HTML4.部署 HTML 到单独的目录中 六、感想 一、Tomcat是什么 百度百科是这样说…

android版会说话的汤姆猫游戏源码

这是一款高仿了android版会说话的汤姆猫游戏源码,大家可以看看吧,非常不错的。 游戏介绍: 是一款休闲游戏,汤姆猫回来了,还带来了全新的冒险旅程!汤姆是您的宠物猫,他可以在您触摸时作出反应,并且用滑稽的声音完整地复述您说的话。…

Tomcat运行不出来汤姆猫404异常

一.发现问题 今天真的是傻缺,运行Tomcat,半天汤姆猫的页面出不来,但是自己写的页面却可以加载出来,给我气的。 30minutes passed,无意间打开了ROOT目录,看到下面这个场景: 这拿头加载啊&…

用Html5制作 汤姆猫 小游戏

以下汤姆猫是用html5制作的小游戏&#xff1b; 建议火狐测试&#xff0c;然后把火狐调成 响应式设计模式&#xff08;以便模拟手机屏幕&#xff09;&#xff0c;设置--->开发者--->响应式设计模式&#xff1b; 如下图 以下是html文件&#xff1a; <!DOCTYPE htm…

汤姆猫炫跑鸿蒙,汤姆猫炫跑最新版下载|汤姆猫炫跑新版本下载 安卓版 v1.4.0.470- 游娱下载站...

汤姆猫炫跑最新版是汤姆猫系列的跑酷休闲手游。汤姆猫经典元素&#xff0c;带给你更多快乐&#xff01;精致流畅的画面&#xff0c;让你在跑酷过程中感受丝滑般的流畅。丰富玩法等你来体验&#xff0c;还有更多活动持续更新哦&#xff01;大家快来游娱下载站下载吧&#xff01;…

汤姆猫java下载手机版_汤姆猫编程星球app下载-汤姆猫编程星球下载v1.0.8-西西软件下载...

汤姆猫编程星球是一款少儿编程教育软件&#xff0c;帮助想学习编程少年快速学习&#xff0c;多彩多样的玩法&#xff0c;锻炼孩子的思维性&#xff0c;逻辑性&#xff0c;从小时候就加强大脑的锻炼&#xff0c;喜欢的朋友可以在西西下载使用。 软件介绍 汤姆猫编程星球介绍和汤…

汤姆猫炫跑鸿蒙,汤姆猫炫跑游戏怎么操作-玩法规则一览

汤姆猫炫跑游戏怎么操作&#xff1f;相信很多玩家感兴趣&#xff0c;今天小编为大家带来汤姆猫炫跑玩法规则一览&#xff0c;感兴趣的玩家不要错过。 汤姆猫炫跑游戏基本操作 你以为在汤姆猫炫跑中&#xff0c;跑就完事了?NO&#xff0c;你还要尽量跑得更远!在保证游戏时间更长…