当前位置: 首页 > news >正文

智能语音处理+1.4语音合成之输出英文音频文件(100%教会)

欢迎来到智能语音处理系列第四篇文章,后面只剩一篇文章了,就可以完结了.

你如果着手与本节的内容,请你先拥有之前的基础:

        第一篇:智能语音处理+1.1下载需要的库(100%实现)-CSDN博客

        第二篇:智能语音识别+1.2用SAPI实现文本转语音(100%教会)-CSDN博客

        第三篇:智能语音处理+1.3用SpeechLib实现文本转语音(100%教会)-CSDN博客

有了 前面三篇的基础,咱们可以直接加快速度了.

 简单介绍代码结构

        首先,要导入库和方法   +   并实例化engine类和stream类(什么意思?前面的几篇文章里面有)

        第二步骤,定义两个文件,一个是要读取的文本文件,还有一个是输出的音频文件.

        第三步骤,调用方法,打开文本文件,读取,读取完后,放入speak流(让文本变成语音)

完整的程序及代码注释

        ok,废话不多说,你们去运行代码吧,报错了,就很有生活了.......

# 导入COM组件操作库:comtypes.client用于创建COM对象,comtypes.gen包含预生成的类型库接口
from comtypes.client import CreateObject
from comtypes.gen import SpeechLib  # 此模块包含Windows语音API的常量定义# 创建语音合成引擎实例(SAPI.SpVoice是Windows语音接口的COM对象)
# 该对象提供文本转语音的核心功能,如调整语速、音量、选择发音人等
engine = CreateObject("SAPI.SpVoice")# 创建音频文件流对象(SAPI.SpFileStream是用于文件输出的COM对象)
# 此对象负责将生成的语音数据写入磁盘文件
stream = CreateObject('SAPI.SpFileStream')# 定义输入文件路径(需确保demo.txt存在且为UTF-8编码的文本文件)
infile = 'demo.txt'
# 定义输出音频文件路径(默认生成WAV格式,若需MP3需系统安装编码器)
outfile = 'demo_audio.wav'# 以写入模式打开音频文件流(SpeechLib.SSFMCreateForWrite表示创建新文件)
# 参数说明:
# - outfile: 输出文件路径
# - SpeechLib.SSFMCreateForWrite: 文件模式常量(0x3),等效于"wb"模式
# 若文件已存在,此操作会覆盖原有内容
stream.Open(outfile, SpeechLib.SSFMCreateForWrite)# 将语音引擎的输出重定向到文件流(默认输出到系统扬声器)
# 此赋值操作后,所有语音输出将写入指定文件而非播放声音
engine.AudioOutputStream = stream# 打开文本文件(注意:此处未处理文件不存在或编码错误的异常)
# 建议使用with语句自动管理资源:with open(infile, 'r', encoding='utf-8') as f:
f = open(infile, 'r', encoding='utf-8')
# 读取全部文本内容(适合小文件,大文件建议分段读取)
theText = f.read()
# 显式关闭文件(若使用with语句可省略此步骤)
f.close()# 执行语音合成操作(注意方法名为Speak而非speak,严格区分大小写)
# 第二个参数SpeechLib.SPFD_Default表示同步生成(默认值为0)
# 等价于:engine.Speak(theText, 0)
engine.Speak(theText)  # 此处隐含使用SpeechLib.SPFD_Default标志# 关闭音频文件流(确保缓冲区数据写入磁盘)
# 注意:必须先关闭流再释放对象,否则可能导致文件损坏
stream.Close()# 最佳实践:显式释放COM对象(虽然Python垃圾回收会自动处理,但提前释放更安全)
del engine
del stream

 

相关文章:

  • 华为HCIE-openEuler认证:能否成为国产操作系统领域的技术稀缺人才?
  • MySQL数据库表查询
  • mitmproxy 一款强大的 HTTP(S) 拦截与调试工具
  • openGauss DataVec + Dify,快速搭建你的智能助手平台
  • SpringBoot企业级开发之【用户模块-更新用户密码】
  • 顺序表(Arraylist)和链表(Linkedlist)
  • YOLOv3的改进思路与方法:解析技术难点与创新突破
  • 编写一个写字楼类似抖音剪映的管理系统Demo
  • 系统思考:战略顾问视角下的定价
  • 《协议栈的骨架:从Web请求到比特流——详解四层架构的可靠传输与流量控制》
  • Deno 统一 Node 和 npm,既是 JS 运行时,又是包管理器
  • MCP的stdio和SSE通信方式使用案例
  • JBOSS反序列化漏洞解析与防范策略CVE-2017-12149
  • socket 客户端和服务器通信
  • 《AI大模型应知应会100篇》第21篇:Prompt设计原则:让大模型精准理解你的需求
  • 本地搭建全网可访问的开源音乐服务器Melody结合内网穿透随时听歌
  • 数据结构-数组与广义表
  • 股指期货怎么锁定利润?
  • Gobuster :dir、dns、vhost
  • 【C++】 —— 笔试刷题day_17
  • 做电商网站价钱/网站设计论文
  • 做网站营销公司排名/当日alexa排名查询统计
  • 官方网站后台怎样做超链接/wordpress免费建站
  • 做网站超速云/真正免费的网站建站平
  • 一个主机可以放几个网站/市场推广方案和思路
  • 南京浦口做网站/企业网站设计公司