当前位置: 首页 > news >正文

263云通信官方网站erp .net网站开发

263云通信官方网站,erp .net网站开发,wordpress仿蛙壳网主题,网站轮播图怎么保存目标需求使用录音形式#xff0c;模拟微信语音聊天。按住录音#xff0c;松开发送语音#xff0c;并完成语音识别。ps#xff1a;百度的语言识别有60秒长度限制#xff0c;需要自己做好控制。实现方案采用C# winform 程序实现桌面版#xff0c;采用Accord 实现语音录制停… 目标需求 使用录音形式模拟微信语音聊天。按住录音松开发送语音并完成语音识别。ps百度的语言识别有60秒长度限制需要自己做好控制。 实现方案采用C# winform 程序实现桌面版采用Accord 实现语音录制停止等基础语音操作操作停止按钮自动调用百度语言识别接口将识别内容显示在文本框中。备注语音识别需要配套阵列麦克风请先注册百度开发者百度语音识别接口请参考http://ai.baidu.com/docs#/ASR-Online-Csharp-SDK/top 实现效果展示   实现过程 1、下载Accord 完成语音操作引用 accord 官方 地址http://accord-framework.net/intro.html官网中有示例demo笔者的就是在示例demo上做改造的。  建立自己的项目引用包中的dll  界面代码using System;using System.Drawing;using System.IO;using System.Windows.Forms;using Accord.Audio;using Accord.Audio.Formats;using Accord.DirectSound;using Accord.Audio.Filters;using Baidu.Aip.API;namespace SampleApp{    public partial class MainForm : Form    {        private MemoryStream stream;        private IAudioSource source;        private IAudioOutput output;        private WaveEncoder encoder;        private WaveDecoder decoder;        private float[] current;        private int frames;        private int samples;        private TimeSpan duration;        /// summary        /// 备注语音识别需要配套阵列麦克风        /// /summary        public MainForm()        {            InitializeComponent();                       // Configure the wavechart            chart.SimpleMode true;            chart.AddWaveform(wave, Color.Green, 1, false);            updateButtons();           // Application.Idle ProcessFrame;        }             void ProcessFrame(object sender, EventArgs e) {                  }        /// summary        ///   从声卡开始录制音频        /// /summary        ///         private void btnRecord_Click(object sender, EventArgs e)        {            // Create capture device            source new AudioCaptureDevice()//这里是核心            {                // Listen on 22050 Hz                DesiredFrameSize 4096,                SampleRate 16000,//采样率                 //SampleRate 22050,//采样率                Channels1,                // We will be reading 16-bit PCM                Format SampleFormat.Format16Bit            };            // Wire up some events            source.NewFrame source_NewFrame;            source.AudioSourceError source_AudioSourceError;            // Create buffer for wavechart control            current new float[source.DesiredFrameSize];            // Create stream to store file            stream new MemoryStream();            encoder new WaveEncoder(stream);            // Start            source.Start();            updateButtons();        }        /// summary        ///   播放录制的音频流。        /// /summary        ///         private void btnPlay_Click(object sender, EventArgs e)        {            // First, we rewind the stream            stream.Seek(0, SeekOrigin.Begin);            // Then we create a decoder for it            decoder new WaveDecoder(stream);            // Configure the track bar so the cursor            // can show the proper current position            if (trackBar1.Value decoder.Frames)                decoder.Seek(trackBar1.Value);            trackBar1.Maximum decoder.Samples;            // Here we can create the output audio device that will be playing the recording            output new AudioOutputDevice(this.Handle, decoder.SampleRate, decoder.Channels);            // Wire up some events            output.FramePlayingStarted output_FramePlayingStarted;            output.NewFrameRequested output_NewFrameRequested;            output.Stopped output_PlayingFinished;            // Start playing!            output.Play();            updateButtons();        }        /// summary        /// 停止录制或播放流。        /// /summary        ///         private void btnStop_Click(object sender, EventArgs e)        {            // Stops both cases            if (source ! null)            {                // If we were recording                source.SignalToStop();                source.WaitForStop();            }            if (output ! null)            {                // If we were playing                output.SignalToStop();                output.WaitForStop();            }            updateButtons();            // Also zero out the buffers and screen            Array.Clear(current, 0, current.Length);            updateWaveform(current, current.Length);            SpeechAPI speechApi new SpeechAPI();            string result speechApi.AsrData(stream,wav);            tb_result.Text 语音识别结果result;        }        /// summary        /// 当音频有错误时将调用这个回调函数。         ///         ///           /// /summary        ///         private void source_AudioSourceError(object sender, AudioSourceErrorEventArgs e)        {            throw new Exception(e.Description);        }        /// summary        ///          ///  每当有新的输入音频帧时该方法将被调用。        ///                                                              /// /summary        ///         private void source_NewFrame(object sender, NewFrameEventArgs eventArgs)        {                       eventArgs.Signal.CopyTo(current);                    updateWaveform(current, eventArgs.Signal.Length);                     encoder.Encode(eventArgs.Signal);                      duration eventArgs.Signal.Duration;                       samples eventArgs.Signal.Samples;            frames eventArgs.Signal.Length;        }        private void output_FramePlayingStarted(object sender, PlayFrameEventArgs e)        {            updateTrackbar(e.FrameIndex);            if (e.FrameIndex e.Count decoder.Frames)            {                int previous decoder.Position;                decoder.Seek(e.FrameIndex);                Signal s decoder.Decode(e.Count);                decoder.Seek(previous);                updateWaveform(s.ToFloat(), s.Length);            }        }             private void output_PlayingFinished(object sender, EventArgs e)        {            updateButtons();            Array.Clear(current, 0, current.Length);            updateWaveform(current, current.Length);        }             ///         private void output_NewFrameRequested(object sender, NewFrameRequestedEventArgs e)        {                     e.FrameIndex decoder.Position;                       Signal signal decoder.Decode(e.Frames);            if (signal null)            {                                e.Stop true;                return;            }                     e.Frames signal.Length;                      signal.CopyTo(e.Buffer);        }        private void updateWaveform(float[] samples, int length)        {            if (InvokeRequired)            {                BeginInvoke(new Action(()                 {                    chart.UpdateWaveform(wave, samples, length);                }));            }            else            {                chart.UpdateWaveform(wave, current, length);            }        }               ///         private void updateTrackbar(int value)        {            if (InvokeRequired)            {                BeginInvoke(new Action(()                 {                    trackBar1.Value Math.Max(trackBar1.Minimum, Math.Min(trackBar1.Maximum, value));                }));            }            else            {                trackBar1.Value Math.Max(trackBar1.Minimum, Math.Min(trackBar1.Maximum, value));            }        }        private void updateButtons()        {            if (InvokeRequired)            {                BeginInvoke(new Action(updateButtons));                return;            }            if (source ! null source.IsRunning)            {                btnBwd.Enabled false;                btnFwd.Enabled false;                btnPlay.Enabled false;                btnStop.Enabled true;                btnRecord.Enabled false;                trackBar1.Enabled false;            }            else if (output ! null output.IsRunning)            {                btnBwd.Enabled false;                btnFwd.Enabled false;                btnPlay.Enabled false;                btnStop.Enabled true;                btnRecord.Enabled false;                trackBar1.Enabled true;            }            else            {                btnBwd.Enabled false;                btnFwd.Enabled false;                btnPlay.Enabled stream ! null;                btnStop.Enabled false;                btnRecord.Enabled true;                trackBar1.Enabled decoder ! null;                trackBar1.Value 0;            }        }        private void MainFormFormClosed(object sender, FormClosedEventArgs e)        {            if (source ! null) source.SignalToStop();            if (output ! null) output.SignalToStop();        }        private void saveFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e)        {            Stream fileStream saveFileDialog1.OpenFile();            stream.WriteTo(fileStream);            fileStream.Close();        }        private void saveToolStripMenuItem_Click(object sender, EventArgs e)        {            saveFileDialog1.ShowDialog(this);        }               private void updateTimer_Tick(object sender, EventArgs e)        {            lbLength.Text String.Format(Length: {0:00.00} sec., duration.Seconds);                  }        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)        {            new AboutBox().ShowDialog(this);        }        private void closeToolStripMenuItem_Click(object sender, EventArgs e)        {            Close();        }        private void btnIncreaseVolume_Click(object sender, EventArgs e)        {            adjustVolume(1.25f);        }        private void btnDecreaseVolume_Click(object sender, EventArgs e)        {            adjustVolume(0.75f);        }        private void adjustVolume(float value)        {                    stream.Seek(0, SeekOrigin.Begin);                 decoder new WaveDecoder(stream);            var signal decoder.Decode();                       var volume new VolumeFilter(value);            volume.ApplyInPlace(signal);               stream.Seek(0, SeekOrigin.Begin);            encoder new WaveEncoder(stream);            encoder.Encode(signal);        }    }} 百度语音识别接口百度已经提供sdk对于支持语音格式如下。支持的语音格式原始 PCM 的录音参数必须符合 8k/16k 采样率、16bit 位深、单声道支持的格式有pcm不压缩、wav不压缩pcm编码、amr压缩格式。  public string AsrData(string filePath, string format pcm, int rate 16000){ var data File.ReadAllBytes(filePath); var result _asrClient.Recognize(data, format, 16000); return result.ToString();}  结果评测对于普通的语言识别效果不好需要阵列麦克风才可以。原文地址:http://www.cnblogs.com/linbin524/p/8086123.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.zqtcl.cn/news/757123/

相关文章:

  • 网站管理员登陆后缀重庆建筑证书查询网站
  • 义乌seoseo建站外贸
  • 只做早餐的网站老网站做seo能不能重新注册
  • 门户网站开发需要多少钱百姓网网站源码
  • 网站设计要学哪些保山网站建设
  • 怎样免费设计网站建设企业网站系统源码
  • 海报设计模板网站找网络公司做网站需要注意
  • 网站开发前端后端书籍wordpress 加文章列表
  • 泰安北京网站建设商业网站的后缀一般为
  • 必须网站的访问量wordpress标题大小
  • qq怎么做放资源的网站英语seo什么意思
  • 学生心理健康网站建设论文php开源内容管理系统
  • 机关网站内容建设雄安专业网站建设
  • 有域名有空间怎么做网站怎么制作网站封面
  • 注册域名哪个网站好信息技术制作网站首页
  • 企业网站app制作价格国外外链平台
  • 泉州市网站设计企业网络有限公司经营范围
  • 电子商务网站创业计划书后台管理系统登录
  • 蚂蚁建站网页传奇游戏单职业
  • 标准通网站建设广州 flash 网站
  • 怎么做游戏自动充值的网站淘宝购物平台
  • 免费帮助建站营销策略怎么写
  • 12380 举报网站建设优秀个人网站
  • 简洁网站模板素材用wordpress上传源砖
  • 高密做网站电影html网页模板设计素材
  • 湖北网络营销网站襄阳网站建设-飞鱼网络
  • 想更新公司网站怎么做关于网站开发的自我评价
  • 找建筑工作哪个网站好新增网站 备案
  • 格力网站的建设情况wordpress mysql 密码重置
  • 网站access数据怎么做高端品牌网站建设的目的