博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 朗读文本工具(可将朗读后的声音保存到文件)
阅读量:5836 次
发布时间:2019-06-18

本文共 3671 字,大约阅读时间需要 12 分钟。

hot3.png

一、关于本文

Antonia下载地址:

162923_ABsW_1425762.png

这个程序可以将字符串读出,或是将朗读后的声音保存到WAV格式的文件中

测试电脑会不会说话,可以新建立一个文本文件,输入代码:

CreateObject("SAPI.SpVoice").Speak "你好"

命名为“你好.vbs”,双击运行,会说话的电脑会读出最后面两个引号中的字符串。

我的Win7里有Lili和Anna两个声音,都是女声,Lili可以朗读汉语和英语,Anna只会读英语。

二、程序控件

163013_x3o1_1425762.png

三、程序代码

与朗读有关的函数被封装在类Narrator中

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;//需要手动添加引用 System.Speechusing System.Speech.Synthesis;namespace Antonia{    public partial class FormMain : Form    {        public FormMain()        {            InitializeComponent();        }        //初始化程序控件        private void FormMain_Load(object sender, EventArgs e)        {            //朗读文本类            Narrator nrr = new Narrator();            //初始化音量下拉框            cmbVolumn.Items.AddRange(                new string[] { "50", "100", "150", "200", "250", "300" });            cmbVolumn.Text = nrr.Volumn.ToString();            //初始化音质下拉框            cmbVoice.Items.Add("#Default#");            cmbVoice.Items.AddRange(nrr.GetVoice());            cmbVoice.Text = "#Default#";        }        //是否朗读后保存到文件        private void chkExportToFile_CheckedChanged(object sender, EventArgs e)        {            txtFilePath.ReadOnly = !chkExportToFile.Checked;        }        //朗读声音,或将声音保存到文件        private void btnBoom_Click(object sender, EventArgs e)        {            Narrator nrr = new Narrator();            //声音音量            nrr.Volumn = int.Parse(cmbVolumn.Text);            //声音类型            if (cmbVoice.Text != "#Default#")            {                nrr.SelectVoice(cmbVoice.Text);            }            //声音生成            if (chkExportToFile.Checked) //将声音保存到文件            {                //有同名文件先删除                if (System.IO.File.Exists(txtFilePath.Text + ".wav"))                {                    System.IO.File.Delete(txtFilePath.Text + ".wav");                }                //保存到文件                nrr.ExportToWave(txtFilePath.Text + ".wav", txtText.Text);                MessageBox.Show("已被保存到" + txtFilePath.Text + ".wav");            }            else //仅朗读文本            {                nrr.Narrate(txtText.Text);            }                    }    }    ///     /// 朗读者类    ///     public class Narrator    {        ///         /// 提供对语音合成引擎访问        ///         private SpeechSynthesizer syn;        ///         /// 音量设置        ///         public int Volumn        {            get { return syn.Volume; }            set { syn.Volume = value; }        }        ///         /// 创建一个朗读者实例        ///         public Narrator()        {            syn = new SpeechSynthesizer();        }        ///         /// 朗读一段文本        ///         /// 被朗读文本        public void Narrate(string text)        {            syn.SpeakAsync(text);        }        ///         /// 选择配音        ///         ///         public void SelectVoice(string role)        {            syn.SelectVoice(role);        }        ///         /// 获取配音声音列表        ///         /// 
public string[] GetVoice() { string[] voice = new string[syn.GetInstalledVoices().Count]; for (int i = 0; i < voice.Length; i++) { voice[i] = syn.GetInstalledVoices()[i].VoiceInfo.Name; } return voice; } /// /// 生成声音并导出到文件 /// /// 文件名地址 /// 被朗读文本 public void ExportToWave(string path, string text) { syn.SetOutputToWaveFile(path); syn.Speak(text); syn.SetOutputToNull(); } }}

四、参考

本程序的编写借鉴了文章

END

转载于:https://my.oschina.net/Tsybius2014/blog/300425

你可能感兴趣的文章
java8之stream流的基本操作
查看>>
二维数组计算协方差java
查看>>
SpringBoot下Redis相关配置是如何被初始化的
查看>>
为你的AliOS Things应用增加自定义cli命令
查看>>
Zookeeper
查看>>
MongoDB 创建基础索引、组合索引、唯一索引以及优化
查看>>
百度PaddlePaddle常规赛NLP赛道火热开启
查看>>
稳了!这才是cookie,session与token的真正区别
查看>>
python项目实战:制作一个简易的GUI界面浏览器
查看>>
微信自定义链接分享制作,微信自定义链接配置
查看>>
mysql日期运算,日期函数(转载)
查看>>
如何切换你想要的语言在XMind 6中
查看>>
OSChina 周二乱弹 —— 假期余额已不足!
查看>>
OSChina 周一乱弹 —— 亚洲四大邪术!
查看>>
Google Go web 入门例子
查看>>
log4j 系统jar 冲突整理
查看>>
前端那些事之React篇--helloword
查看>>
swift3.0 常用字符操作 <持续整理>
查看>>
Oracle11g及PL/SQL Developer的安装和配置
查看>>
ios的google解析XML框架GDataXML的配置及使用
查看>>