专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

C# 文字转语音 播放SpVoice

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:44:48       共计:3630 浏览

 

最近拿到一个需求,需要调整一下现有的语音播放逻辑,因为有的语音需要循环播放,有的不需要

我们以前的逻辑是都不循环的,所以采用了SpVoice (引入SpeechLib.dll)的异步播放,我拿到了之后发现异步和同步其实应该是都可以实现的,但是异步我认为有一个问题就是不知道什么时候能让循环停止,

搜了很多也没有解决我的问题,于是我尝试了用同步来解决这个问题

以下是我改进的代码:

        /// <summary>
        /// 同步播放语音
        /// </summary>
        /// <param name="voiceContent">语音内容</param>
        /// <param name="isLoop">是否循环播放</param>
        /// <param name="isSelectOver">查询是否结束</param>
        public void playSoundAsync(string voiceContent, bool isLoop, bool isSelectOver = false)
        {
            VoiceContent = voiceContent;
           int   i = 1;
            //是否循环播放
            if (isLoop)
            {
                //最多循环10次
                while (i <= 10)
                {
                    //如果查询结束
                    if (isSelectOver)
                    {
                        //关闭当前语音
                        voice.Speak(string.Empty, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
                        break;
                    }
                    else
                    {
                        //播放语音
                        voice.Speak(voiceContent, SpeechVoiceSpeakFlags.SVSFIsXML | SpeechVoiceSpeakFlags.SVSFlagsAsync);
                        i++;
                    }
                }             }
            else
            {
                //如果查询结束
                if (isSelectOver)
                {
                    //关闭语音
                    voice.Speak(string.Empty, SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
                }
                else
                {
                    //播放语音
                    voice.Speak(voiceContent, SpeechVoiceSpeakFlags.SVSFIsXML | SpeechVoiceSpeakFlags.SVSFlagsAsync);
                }
            }         } 此时还有一个问题,循环的时候第二个参数传true ,但是后续还有要播放的内容时,需要先停止上一个循环,也就是第三个参数需要传true(默认false) 而后还要再调用以下方法来播放新的语音,我认为这里其实可能会有更好的办法,目前我还没有想到,如果有哪位大神有好的意见,欢迎一起头脑风暴。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:neospeech语音库在c#中怎么用 | ·下一条:c#文本转语音以及语音阅读小实例

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有