【C#语音文字互转】.NET的TTS文本转语音合成

news2024/9/26 3:26:43

本文章环境介绍:
Visual Studio 2022;C#SDK为.NET6.0

一. 启动 Visual Studio 并创建控制台应用程序

1.1 首先在项目打开NuGet包管理工具下载System.Speech

在这里插入图片描述

1.2测试

下面为一个典型的输出示例

using System.Speech.Synthesis;
namespace KeepTalking
{
  class Program
  {
    static void Main(string[] args)
    {
      var synthesizer = new SpeechSynthesizer();
      synthesizer.SetOutputToDefaultAudioDevice();
      synthesizer.Speak("支付宝到账一百万元");
    }
  }
}

注意,需要有音频输出设备。运行该示例即可听到语音输出。

二. 声音选择

2.1 列出可选语音

将下面代码放入SpeechSynthesizer实例化后

foreach (var voice in synthesizer.GetInstalledVoices())
{
    var info = voice.VoiceInfo;
    Console.WriteLine($"Id: {info.Id} | Name: {info.Name} | Age: { info.Age} | Gender: { info.Gender} | Culture: { info.Culture}");
}

运行后输出:
在这里插入图片描述
只有两个英语语音可用,这是windows默认自带语音,如何选择其他语音。

2.2 下载本地语音包

导航到“设置”|“时间和语言”|“语言和区域”,然后单击“添加语言”,确保在可选功能中选择“语音”。
在这里插入图片描述
下面以中文为例,其他语言可以点击添加语言。

2.3 手动设置声音输出

在代码中加入

synthesizer.SelectVoice("Microsoft Huihui Desktop");

三. 增强内容输入

3.1 SSMl简介

该TTS框架支持语音合成标记语言(SSML)的格式输入。SSML(Speech Synthesis Markup Language)是一种基于XML的标记语言,用于在文本到语音(TTS)系统中控制发音和语调等增强自然度。具体格式定义详见W3C SSML (www.w3.org/TR/speech-synthesis)。

常用SSML提升语音合成自然度的技巧:

  • 适当的停顿:<break time=“1s”/> 标签可以用来在句子或短语之间添加适当的停顿。
  • 控制语速:<prosody rate=“…”> 可以调整文本的朗读速度。rate 属性可以设置为更快或更慢的值。
  • 调节音量:<prosody volume=“…”> 可以用来增加或减少特定文本段的音量。
  • 调整音高:<prosody pitch=“…”> 可以用于调整文本段的音高。
  • 强调重要词语:<emphasis> 标签可以用来强调文本中的某些词语或短语。
  • 合适的语调:<say-as interpret-as=“…”> 可以用来指示语音合成引擎以特定的方式朗读文本,例如数字、日期、时间等。
  • 朗读不同的角色:<voice name=“…”> 可以指定使用不同的声音类型来朗读文本,如男性或女性声音。
  • 适当的标点符号:SSML支持标点符号的自然朗读,如问号(?)、感叹号(!)等。
  • 控制段落和句子的朗读: <p> 用于段落,<s> 用于句子,这有助于语音合成引擎理解文本的结构。
  • 使用电话区号和扩展:<phoneme alphabet=“…” ph=“…”> 可以指定精确的发音,特别是对于缩写或特殊术语。
  • 使用子元素来细化控制:<sub alias=“…”> 可以用来定义一个别名,以便在文本中插入非标准单词或短语的特定发音。
  • 利用描述来提供额外信息:<desc> 标签可以用来为合成器提供额外的上下文信息。
  • 使用连接元素:<connect> 可以用来在文本中定义连读的点,这对于保持自然流畅的语音非常重要。

3.2 示例

using System.Reflection;
using System.Speech.Synthesis;
using System.Text.RegularExpressions;
namespace KeepTalking
{
    class Program
    {
        static void Main(string[] args)
        {
            var synthesizer = new SpeechSynthesizer();
            var savedPrompt = new PromptBuilder();
            savedPrompt.AppendSsml("C:\\Users\\26366\\Desktop\\1.xml");
            synthesizer.Speak(savedPrompt);
        }
    }
}

其中1.xml

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/10/synthesis http://www.w3.org/TR/speech-synthesis11/synthesis.xsd" xml:lang="zh-cn">
  <p>静夜思</p>
  <s>床前明月光,</s>
  <s>疑是地上霜。</s>
  <p>举头望明月,</p>
  <s>低头思故乡。</s>
  <!-- 添加适当的停顿 -->
  <break time="1s"/>
  <p>啊 !在这宁静的月光下,思绪飘向远方的<emphasis>家乡</emphasis></p>
</speak>

运行,即有语音输出。

参考

  1. https://learn.microsoft.com/zh-cn/archive/msdn-magazine/2019/june/speech-text-to-speech-synthesis-in-net
  2. https://www.cnblogs.com/fx_guo/archive/2011/01/14/1935388.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视觉SLAM第三讲

本讲将介绍视觉 SLAM 的基本问题之一&#xff1a;三维空间的刚体运动描述方式&#xff1a;旋转矩阵、变换矩阵、四元数和欧拉角。 点、向量和坐标系 点&#xff1a;空间当中的基本元素&#xff0c;没有长度&#xff0c;没有体积。 向量&#xff1a;可以将向量看作从一个点指向…

如何快速创建一个微信报名链接

在这个快节奏的时代&#xff0c;如何让活动报名更加便捷、高效&#xff0c;成为了众多主办方关注的焦点。今天&#xff0c;就让我们一起探索如何快速创建一个微信报名链接&#xff0c;让您的活动报名变得前所未有的简单与智能。 一、洞悉需求&#xff0c;解锁报名新方式 在数字…

【Pyspark-驯化】一文搞定spark的代码执行原理和使用技巧

【Pyspark-驯化】一文搞定spark的代码执行原理和使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获取 微信公众号 &…

国标GB28181协议设备通道告警没有快照图片怎么办?实时流抓图/录像抓图

熟悉国标GB28181协议的同学都知道&#xff0c;国标协议在告警推送这一块定义了各种告警类型和告警参数&#xff0c;但就是没有定义告警的图片应该怎么上传到平台&#xff0c;所以&#xff0c;现在市面上的所有设备&#xff0c;几乎都不支持上传告警图片&#xff0c;这给我们的项…

CCRC-DSA数据安全评估师:加快构建大网络安全工作格局

7月31日&#xff0c;第十二届ISC.AI互联网安全大会开幕式在北京国家会议中心隆重举行&#xff0c;本次大会以“构建大型安全防护模型&#xff0c;引领安全产业创新”为主题。 中央网络安全和信息化委员会办公室副主任、国家互联网信息办公室副主任王京涛出席并发表了重要讲话。…

【简历】黑龙江某一本大学:Java简历指导,中厂面试通过率低

简历说明 这是黑龙江某一本大学25届的校招简历&#xff0c;计算机专业&#xff0c;那么我们说像这种比较好的一本大学叫老一本&#xff0c;大家应该定下&#xff0c;一本的就业主体在中厂&#xff0c;所以校招你要先定你的就业范围&#xff0c;因为考察的项目要求&#xff0c;…

企微中台助力私域用户营销

背景 为了提升公司内外部的沟通、协作效率&#xff0c;我们在内部广泛使用了企业微信服务。同时&#xff0c;随着互联网获客成为主要手段&#xff0c;企业面临着激烈的竞争&#xff0c;导致获客变得更加困难&#xff0c;这需要我们花费更多的时间和资源。因此&#xff0c;精细化…

【中项】系统集成项目管理工程师-第10章 项目整合管理-10.1制定项目章程

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

包的基本使用

目录 一、看一个应用场景 二、基本介绍 三、快速入门 四、注意事项和使用细节 1、导入包的基本语法 2、导入包的模块的指定函数、类、变量 3、__init__.py 通过__all__控制允许导入的模块 4、包可以有多个层级 5、快捷键 altenter/shiftaltenter 可以快捷的导入 6、…

【计算机方向】五本计算机SCI,国人占比高,沾边就收!堪称“水刊之王”!

本期将为您带来五本计算机SCI 妥妥毕业神刊&#xff01; KNOWLEDGE ENGINEERING REVIEW Evolving Systems ASIAN JOURNAL OF CONTROL EUROPEAN JOURNAL OF CONTROL INTERNATIONAL JOURNAL OF CONTROL AUTOMATION AND SYSTEMS 期刊名称&#xf…

电话外呼系统功能详解

外呼系统的功能特点 1、数据管理:外呼系统全面管理电销数据&#xff0c;数据报表应有尽有。 2、高频拨号:外呼系统具有多种拨号方式&#xff0c;专属的电销线路&#xff0c;不限制高频拨号。 3、一键拨号:外呼系统的一键拨号功能可以减少手动输入号码的繁琐过程。 4、筛选号…

深度学习中常见的四种数据标准化方法详细解读(StandardScaler、MinMaxScaler、RobustScaler、MaxAbsScaler)

目录 1. 前提摘要 2. 标准化方法 2.1 StandardScaler 2.1.1 计算方法 2.1.2 计算公式 2.1.3 适用场景 2.2 MinMaxScaler 2.2.1 计算方法 2.2.2 计算公式 2.2.3 适用场景 2.3 RobustScaler 2.3.1 计算方法 2.3.2 计算公式 2.3.3 适用场景 2.4 MaxAbsScaler 2.…

一篇文章让你用我的世界中的红石搞懂什么是ALU!

目录 1.一些在开始的约定 2.七大逻辑门电路 1、 与门 2、 或门 3、 非门 5、 或非门 6、 异或门 7、 同或门 3.半加器 4.全加器 5.ALU 1.一些在开始的约定 相同的概念&#xff1a;相同的概念&#xff1a;高电平低电平逻辑真逻辑假 开关的开 开关的关 灯的亮 灯…

聚鼎科技:装饰画怎么做盈利更快

在当今社会&#xff0c;艺术与商业的界限日渐模糊&#xff0c;装饰画作为一种独特的艺术形式&#xff0c;不仅美化了空间&#xff0c;同时也成为了一种盈利的途径。要在竞争激烈的市场中脱颖而出&#xff0c;实现盈利最大化&#xff0c;创作者及销售者必须采取一些明智的策略。…

19 注意力机制

目录 1.注意力机制从心理学的角度出发注意力机制非参注意力池化层Nadaraya-Watson 核回归:总结注意力汇聚:Nadaraya-Watson 核 代码实现非参数注意力汇聚(非参数注意力池化)注意力权重参数注意力汇聚(参数注意力池化)2.注意力分数如何将 key 和 value 拓展到更高的维度掩…

C#图片批量下载Demo

目录 效果 项目 代码 下载 效果 C#图片批量下载 项目 代码 using Aspose.Cells; using NLog; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.…

【zookeeper 第六篇章】分布式锁

一、分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。 二、zookeeper 分布式锁 1、客户端A创建临时顺序节点 demo。并在节点下创建 x_00000001。 2、客户端A判断是否自己是第一个节点&#xff0c;如果是就锁成功。 3、客户端B创建临时顺序节点 demo。 并…

文件操作及面试题

目录 文本文件和二进制文件 File概述 递归去查看某个目录下的所有文件与目录 InputStream概述 OutputStream 概述 文件操作的应用 面试题&#xff1a;递归文件路径并且删除指定文件 将一个指定路径的文件复制到另一个文件中去 1.文件 此处的文件有多种含义&#xff0c…

基于京东家电数据分析与价格预测研究【爬虫、Pyecharts、Flask、机器学习】《商品可换》

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍研究背景研究目的研究意义数据获取数据预处理数据分析与可视化大屏可视化基于Flask的系统框架集成价格预测模型每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署…

去字节面试大模型算法岗,体验极佳!!

最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友…