日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

.NET 語音轉(zhuǎn)文字 文字轉(zhuǎn)語音

 nxhujiee 2019-07-10

文字轉(zhuǎn)語音

這個比較簡單只要引用COM中的 Microsoft Speech objcet Library

復(fù)制代碼
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("成功");
        }
復(fù)制代碼

 

文字生成語音文件

引用程序集中的 System.Speech

復(fù)制代碼
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();
                //調(diào)用語音轉(zhuǎn)文字
                //Thread threadVoice = new Thread(VoiceToText);
                //threadVoice.Start(str);
        }
復(fù)制代碼

 

語音轉(zhuǎn)文本

復(fù)制代碼
using System.Speech.Recognition;
        private SpeechRecognitionEngine SRE = new SpeechRecognitionEngine();
        /// <summary>
        //  語音轉(zhuǎn)文本
        /// </summary>
        /// <param name="str"></param>
        private void VoiceToText(object str)
        {
            try
            {
                string filepath = str.ToString(); ;
                SRE.SetInputToWaveFile(filepath);         //<=======默認(rèn)的語音輸入設(shè)備,你可以設(shè)定為去識別一個WAV文件。
                GrammarBuilder GB = new GrammarBuilder();
                //需要判斷的文本(相當(dāng)于語音庫)
                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); //<=======異步調(diào)用識別引擎,允許多次識別(否則程序只響應(yīng)你的一句話)
            }
            catch (Exception ex)
            {
                string s = ex.ToString();
            }
        }


        /// <summary>
        /// 判斷語音并轉(zhuǎn)化為需要輸出的文本
        /// </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);

}

轉(zhuǎn)自:https://www.cnblogs.com/-maomao/p/6861447.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多