.NET 语音转文字 文字转语音

转:https://www.cnblogs.com/-maomao/p/6861447.html

文字转语音

这个比较简单只要引用COM中的 Microsoft Speech objcet Library

 

using SpeechLib;
     public ActionResult speak(string speechSounds)
        {
            SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
            SpVoice spVoice = new SpVoice();
            spVoice.Rate = spVoice.Rate - 5;
            if (spVoice.Volume < 100)
            {
                spVoice.Volume = spVoice.Volume + 10;
            }

            if (spVoice.Volume > 9)
            {
                spVoice.Volume = spVoice.Volume - 10;
            }
            spVoice.Speak(speechSounds, SpFlags);
            return Content("成功");
        }

文字生成语音文件

引用程序集中的 System.Speech

using System.Speech.Synthesis;
private SpeechSynthesizer synth = null;
        /// <summary>
        /// 返回一个SpeechSynthesizer对象
        /// </summary>
        /// <returns></returns>
        private SpeechSynthesizer GetSpeechSynthesizerInstance()
        {
            if (synth == null)
            {
                synth = new SpeechSynthesizer();
            }
            return synth;
        }
        /// <summary>
        ///  播放
        /// </summary>
        public void Play(string text)
        {
            Thread thread = new Thread(new ParameterizedThreadStart(SaveMp3));
            thread.Start(text);
        }
        /// <summary>
        /// 保存语音文件
        /// </summary>
        /// <param name="text"></param>
        public void SaveMp3(object text)
        {
                synth = GetSpeechSynthesizerInstance();
                string spText = text.ToString();
                synth.Rate = 1;
                synth.Volume = 100;
                string filename = DateTime.Now.ToString("yyyyMMddHHmmss");
                string str = "C:\\Users\\admin1\\Desktop\\新建文件夹\\" + filename + ".wav";
                synth.SetOutputToWaveFile(str);
                synth.Speak(spText);
                synth.SetOutputToNull();
                //调用语音转文字
                //Thread threadVoice = new Thread(VoiceToText);
                //threadVoice.Start(str);
        }

 

 

语音转文本

using System.Speech.Recognition;
        private SpeechRecognitionEngine SRE = new SpeechRecognitionEngine();
        /// <summary>
        //  语音转文本
        /// </summary>
        /// <param name="str"></param>
        private void VoiceToText(object str)
        {
            try
            {
                string filepath = str.ToString(); ;
                SRE.SetInputToWaveFile(filepath);         //<=======默认的语音输入设备,你可以设定为去识别一个WAV文件。
                GrammarBuilder GB = new GrammarBuilder();
                //需要判断的文本(相当于语音库)
                GB.Append(new Choices(new string[] { "时间", "电话", "短信", "定位", "天气", "帮助" }));
                Grammar G = new Grammar(GB);
                G.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(G_SpeechRecognized);
                SRE.LoadGrammar(G);
                SRE.RecognizeAsync(RecognizeMode.Multiple); //<=======异步调用识别引擎,允许多次识别(否则程序只响应你的一句话)
            }
            catch (Exception ex)
            {
                string s = ex.ToString();
            }
        }


        /// <summary>
        /// 判断语音并转化为需要输出的文本
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void G_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            string result = e.Result.Text;
            string RetSpeck = string.Empty;
            switch (result)
            {
                case "时间":
                    RetSpeck = "你输入了时间";
                    break;
                case "电话":
                    RetSpeck = "你输入了电话";
                    break;
                case "短信":
                    RetSpeck = "你输入了短信";
                    break;
                case "定位":
                    RetSpeck = "你输入了定位";
                    break;
                case "天气":
                    RetSpeck = "你输入了天气";
                    break;
                case "帮助":
                    RetSpeck = "你输入了帮助";
                    break;
            }
            speak(RetSpeck);
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用.NET实现语音文字的示例代码: ```csharp using System; using System.Speech.Recognition; namespace SpeechToText { class Program { static void Main(string[] args) { // 创建SpeechRecognitionEngine对象 SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); // 设置语音识别引擎的语言 recognizer.SetInputToDefaultAudioDevice(); recognizer.LoadGrammar(new DictationGrammar()); // 注册事件处理程序 recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); // 开始语音识别 recognizer.RecognizeAsync(RecognizeMode.Multiple); Console.WriteLine("开始语音识别,请开始说话..."); Console.ReadLine(); } static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { if (e.Result != null && e.Result.Text != "") { Console.WriteLine("识别结果: " + e.Result.Text); } } } } ``` 这段代码使用了.NETSpeechRecognitionEngine类来实现语音识别功能。首先,我们创建了一个SpeechRecognitionEngine对象,并设置其输入设备为默认音频设备。然后,我们加载了一个DictationGrammar语法,该语法可以识别任何输入的语音。接下来,我们注册了一个事件处理程序,当语音被识别时,会触发该事件,并将识别结果打印到控制台上。最后,我们调用RecognizeAsync方法开始语音识别。 请注意,为了运行这段代码,你需要在项目中引用System.Speech和System.Speech.Recognition命名空间,并在项目属性中设置目标框架为.NET Framework 4.5或更高版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值