zoukankan      html  css  js  c++  java
  • TTS-零基础入门之语音模板化

    上篇介绍了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

  • 相关阅读:
    完全备份、差异备份以及增量备份的区别(转)
    Backup Exec Inventory 与Catalog的含义(转载)
    从客户端中检测到有潜在危险的Request.Form值的解决办法
    IQueryable与IEnumberable的区别(转)
    SQL递归查询(with cte as) 物料分解
    Http权威指南笔记(二) Http状态码大全
    Http权威指南笔记(一) URI URL URN 关系
    echarts在.Net中使用实例(二) 使用ajax动态加载数据
    echarts在.Net中使用实例(一) 简单的Demo
    sql显示12个月数据
  • 原文地址:https://www.cnblogs.com/llguanli/p/7140698.html
Copyright © 2011-2022 走看看