上篇介绍了TTS的一个简单样例http://blog.csdn.net/u010176014/article/details/47326413

本篇咱们进一步聊聊 语音怎样读模板。

比方

公交车上的模板:**到了,开门请当心,下车请走好。

新生入学系统的模板:丹桂飘香共祝美好明天,金秋送爽喜迎八方学子。

**同学你好,欢迎来到**大学。

本文介绍的非常适用于这样的情况,模板比較固定,仅仅有个别处不一样。并且还可依据须要更换配置,轻松换模板。

我做了一个天气预报的Demo。

第一步  加入一个resx文件

属于资源文件由 XML 组成,能够增加不论什么资源。包含二进制。

像字典一样 有Key 和Value。

然后填充内容。

名称就是Key值 ,值写的包括參数。比如“观众朋友晚上好。如今是北京时间晚上[{0}]。以下我们一起来关注城市天气预报。

” 这里面的时间能够依据详细情况赋值。把变的东西拿出来。

第二步 写一个类可以取出资源里的这些文字。

新建一个Resource类 。里面的代码例如以下。

using System.Text;
using System.Reflection;
using System.Resources;
namespace TTSSpeakDemo
{
public sealed class Resource
{
#region Static part
private const string ResourceFileName = ".SpeakTemplt"; static Resource InternalResource = new Resource();
/// <summary>
/// 获取文件资源管理
/// </summary>
public static Resource Manager
{
get { return InternalResource; }
}
#endregion #region Instance part ResourceManager rm = null; /// <summary>
/// Constructor
/// 取得资源文件
/// </summary>
public Resource()
{
rm = new ResourceManager(this.GetType().Namespace + ResourceFileName, Assembly.GetExecutingAssembly());
} /// <summary>
/// 从程序集资源文件里获取指定键的消息
/// </summary>
public string this[string key]
{
get
{
return rm.GetString(key, System.Globalization.CultureInfo.CurrentUICulture);
}
}
#endregion }
}

第三步 画个界面

我做的比較简单。

欢饮大家继续丰富。。

第四步  加入事件

<span style="font-family:KaiTi_GB2312;font-size:18px;">using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;
using SpeechLib; namespace TTSSpeakDemo
{
#region 语音读文本Demo-2015-8-9-MDM /// <summary>
/// 语音读文本Demo-2015-8-7-MDM
/// </summary>
public partial class SpeakDemo : Form
{
public SpeakDemo()
{
InitializeComponent();//自己主动生成,不动
}
/// <summary>
/// 发音对象
/// </summary>
public SpVoice voice = new SpVoice();//该类是支持语音合成(TTS)的核心类。通过SpVoice对象调用TTS引擎。从而实现朗读功能。 public SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFDefault;// /// <summary>
/// 通过keyword获取语音文字资源内容
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
private static string GetTextResourceByKey(string key)
{
return Resource.Manager[key].ToString().Trim();
} private void btnSpeak_Click(object sender, EventArgs e)
{
string beginWord = GetTextResourceByKey("Begin");//依据key值获取到对应的文本
string baoDing=GetTextResourceByKey("BaoDing");//同上 string nowTime = DateTime.Now.ToString("r");//获取时间
string speakWord = string.Format(beginWord, nowTime); //问候语和时间
string weather=txtWeather.Text;
string air=txtAir.Text;
string speakWeather = string.Format(baoDing,weather, air);//将參数放入模板中
voice.Speak(speakWord, spFlags);
voice.Speak(speakWeather, spFlags); } }
#endregion
}
</span>

这样我们就能听到啦~尽管简单 可是非常有用哦~

将Demo传至网盘。供大家直接看看效果。

http://yunpan.cn/cdBHfJzuqZHaC  訪问password 96c9

最新文章

  1. 关于struts2的过滤器和mybatis的插件的分析
  2. 分析循环 Analysis of Loops-------geeksforgeeks 翻译
  3. mybatis动态sql中的trim标签的使用
  4. 《OD学Hive》第六周20160730
  5. 【异构计算】OpenCL矩阵转置
  6. SQL Execute语法.
  7. IPv6-only 的兼容性解决方案-b
  8. Android自定义控件 开源组件SlidingMenu的项目集成
  9. HID Keyboard &amp; Mouse descriptor.
  10. ReentrantLock可重入锁的使用场景(转)
  11. 获取Camera 支持视频的尺寸
  12. React Native 系列(五) -- 组件间传值
  13. 02-body标签中相关标签
  14. javascript中的数字玩法,颠覆你的眼睛
  15. Azure ARM (22) 使用Azure PowerShell创建Azure RM VM
  16. LeetCode 题解之Remove Duplicates from Sorted List II
  17. stl源码剖析 详细学习笔记 算法(1)
  18. PO BO VO DTO POJO DAO概念及其作用(附转换图)
  19. SQL Server 自增字段归零
  20. pta 奇数值结点链表&amp;&amp;单链表结点删除

热门文章

  1. 在oracle存储过程中创建暂时表
  2. 再谈怎样以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式
  3. 第一个WPF
  4. es6 -- set 数据结构
  5. Fragment-如何监听fragment中的回退事件与怎样保存fragment状态
  6. C_深入(内存模型)
  7. reboot---重启Linux系统
  8. Android Studio 函数使用方法提示 快捷键
  9. Web前端开发实战4:导航菜单(一)
  10. 玩转Bash脚本:选择结构之case