winform语音播报

第一步:

在Nut中引用:

第二步:

创建一个窗体,在文本框中输入文字,点击按钮将文本框的内容语音播放出来

点击按钮

   private void button1_Click(object sender, EventArgs e)
        {
            new Lisen().Tts(richTextBox1.Text);
        
        }
 public class Lisen
    {
        private readonly Asr _asrClient;
        private readonly Tts _ttsClient;
        //App ID: 7948081         
        //API Key: 1G4dOtYNSCud03x5CKM77grtCPTky2z4         
        //Secret Key: vluE1PUsviXuoXgNaADUKgfO7kl402YG        
        public Lisen()        {
            _asrClient = new Asr("7948081","1G4dOtYNSCud03x5CKM77grtCPTky2z4", "vluE1PUsviXuoXgNaADUKgfO7kl402YG");
            _ttsClient = new Tts("1G4dOtYNSCud03x5CKM77grtCPTky2z4", "vluE1PUsviXuoXgNaADUKgfO7kl402YG");
        }
        // 识别本地文件       
        //public void AsrData()       
        //{        
        //    var data = File.ReadAllBytes("语音pcm文件地址");
        //    var result = _asrClient.Recognize(data, "pcm", 16000);       
        //    Console.Write(result);        
        //}         
        // 识别URL中的语音文件       
        //public void AsrUrl()       
        //{        
        //    var result = _asrClient.Recoginze(    
        //       "http://xxx.com/待识别的pcm文件地址",      
        //       "http://xxx.com/识别结果回调地址",        
        //       "pcm",      
        //       16000);        
        //   Console.WriteLine(result);     
        //}        
        ///List<string> listdata = new List<string>();     
        // <summary>        
        // 语音文件的生成       
        // </summary>        
        /// <param name="str">需要生成的语音字符</param>        
       /// <returns></returns>        
       public string Tts(string str)
        {
            lock (this)
            {
                string pathwave = @"D:\3.mp3";
                // 可选参数            
                var option = new Dictionary<string, object>()
                {
                    { "spd", 5}, // 语速          
                    { "vol", 10}, // 音量            
                    { "per", 0}  // 发音人,4:情感度丫丫童声  
                };
                var result = _ttsClient.Synthesis(str, option);
                if (result.ErrorCode == 0)  // 或 result.Success 
                {                    
                    File.WriteAllBytes(pathwave, result.Data);
                    var mp3FileName = pathwave;
                    var outputFileName = mp3FileName.Substring(0, mp3FileName.Length - 3) + "wav";
                    Mp3ToWav(mp3FileName, outputFileName);//mp3转wav文件             
                    SoundPlayer player = new SoundPlayer();//进行语音文件播放                
                    player.SoundLocation = outputFileName;
                    player.Load(); //同步加载声音         
                    player.Play(); //启用新线程播放    
                }
                return "";
            }
        }
        /// MP3文件转WAV

        /// </summary>

        /// <param name="mp3File">MP3文件路径</param>

        /// <param name="outputFile">WAV文件输出目录</param>
        public static string Mp3ToWav(string mp3File, string outputFile)
        {
            using (Mp3FileReader reader = new Mp3FileReader(mp3File))
            {
                var newFormat = new WaveFormat(8000, 8, 1); // 8kHz, 8bit        
                using (var conversionStream = new WaveFormatConversionStream(newFormat, reader)){
                    WaveFileWriter.CreateWaveFile(outputFile, conversionStream);
                }
                return outputFile;
            }
        }
        public static string Convert2Wav(string filePath)
        {
            string directoryName = Path.GetDirectoryName(filePath); string fileName = Path.GetFileName(filePath); string tempDir = directoryName + "\\temp" + DateTime.Now.ToString("yyyyMMddHHmmss") + "\\"; if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); }
            if (filePath.EndsWith(".wav", StringComparison.CurrentCultureIgnoreCase))
            {
                using (var reader = new WaveFileReader(filePath))
                {
                    var newFormat = new WaveFormat(8000, 8, 1); // 8kHz, 8bit              
                    using (var conversionStream = new WaveFormatConversionStream(newFormat, reader)){
                        WaveFileWriter.CreateWaveFile(tempDir + fileName, conversionStream);
                    }
                }
            }
            else if (filePath.EndsWith(".mp3", StringComparison.CurrentCultureIgnoreCase)){
                using (Mp3FileReader reader = new Mp3FileReader(filePath)){
                    var newFormat = new WaveFormat(8000, 8, 1); // 8kHz, 8bit    
                    using (var conversionStream = new WaveFormatConversionStream(newFormat, reader)){
                        WaveFileWriter.CreateWaveFile(tempDir + fileName, conversionStream);
                    }
                }
            }
            return tempDir + fileName;
        }
    }             

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: WinForm是一个能够轻松制作Windows桌面应用程序的框架。在WinForm语音通信中,我们可以利用第三方语音通信库或自己开发一个语音通信模块。 一些常见的第三方语音通信库比如Agora,声网等等,它们提供了语音通信所需的API、SDK和文档,开发人员可以基于这些库来快速搭建语音通信功能。这些库还提供了一些调试和监控工具,例如网络流量分析工具、设备调试工具、音频/视频质量监控工具等等,这些工具可以帮助我们更好地保证语音通信质量。 如果我们想自己开发一个语音通信模块,我们需要用到.net framework自带的NAudio库来实现音频采集、编码、解码、处理和播放等功能。我们可以利用NAudio库实现音频通话、语音聊天室等功能。当然,开发这些功能需要相应的音频处理和算法知识,这对开发人员的技术水平要求比较高。 总的来说,WinForm语音通信可以通过第三方语音通信库或自己开发一个语音通信模块来实现。这需要开发人员具备一定的技术水平和相关的开发经验。在实现语音通信的过程中,需要重点关注音频质量和网络流量。良好的音频质量和低延迟的网络是保证语音通信体验的重要因素。 ### 回答2: Winform语音通信是一种基于Windows操作系统的桌面应用程序语音通信技术。Winform即Windows Forms,是一种采用.NET框架实现的Windows应用程序开发技术,可以实现Windows应用程序图形化界面的设计和开发。通过将Winform技术应用于语音通信功能的开发,可以实现在Windows桌面应用程序中实现语音通信的功能。 Winform语音通信技术可以应用于很多不同领域的应用场景,如在线语音聊天、视频会议、远程教育等。其具有使用简单、音质清晰、低延迟等特点。相比于WebRTC等技术,Winform语音通信具备更好的兼容性和稳定性。 实现Winform语音通信也需要使用一些第三方库或框架,如NAudio音频库、Socket通信等。开发者需要熟悉C#编程语言和.NET框架,具备音视频编码和解码的知识。 总之,Winform语音通信技术可以帮助开发者快速实现音频通信功能,具有广泛的应用场景和开发潜力。 ### 回答3: Winform语音通信是一种利用Winform技术实现的语音通信方式。Winform是一种Windows Forms应用程序开发框架,它提供了各种窗体控件和工具,可以帮助开发人员更快、更高效地开发Windows应用程序。而Winform语音通信则是利用这个框架的特性,实现了两个或多个用户之间的语音通信。 Winform语音通信所需要的基本技术包括音频采集、音频编解码、网络传输和音频播放等。用户之间的语音数据可以通过网络传输,使用UDP或TCP等不同的协议进行传输,保证通信的稳定性和实时性。同时,采用压缩算法对音频数据进行编码,可以提高传输效率,减少网络带宽的占用。 Winform语音通信在实现上并不复杂,但需要具备一定的音频处理和网络通信知识。同时,为了保证通信质量和稳定性,还需要对音频采集、音频编解码和网络传输等方面进行优化和调试。对于普通用户而言,可以使用现有的语音通信软件,实现语音通信的功能,而无需自己进行开发。 总之,Winform语音通信技术是一种基于Winform框架实现的语音通信方式,它可以帮助开发人员更加高效地开发语音通信应用程序,为用户提供更好、更舒适的语音通信体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值