• C#语音录制


    客服小妹是如何泡到手的——C#定时提醒·语音录制·语音播放·文件转录Demo——倾情奉献!

     

    一.需求提出

          客服小妹跟我说,每天要统计新加好友数,得先记下昨天的数目,然后查看今天的数目,还要相减,打字,记录——好麻烦!

          又说,客户多的时候,忙起这头忘了那头,文字记录备忘又太费劲!

          我说,赐你一个软件!于是有了下面这个东西。

    二.主要界面   

                     

    三.主要功能简介

           1 .可定时弹出主界面,输入今日好友数,计算出新加好友数,并将今日好友数存盘。

           2.统计信息显示在界面上,并且写入word文件中以备查看,并自动拷贝至剪切板,方便复制。

           3.可语音备忘,录制语音消息,并保存在文件夹中。

           4.可下拉列表查看文件,并选中播放。

           5.可将原始文件转录成MP3文件。

    四.编码实现

        1.好友统计功能相关实现

          先设计两个属性,直接对应于两个文件,这样一来,既能以字段的风格来操作文件,又能将变量持久化到硬盘上,以保存状态。

    复制代码
            public int TodayFriendsCount
            {
                get 
                {
                    if (!File.Exists("todayFriendsCount.dat"))
                    {
                        File.WriteAllBytes("todayFriendsCount.dat", BitConverter.GetBytes(0));
                    }                
                    return BitConverter.ToInt32(File.ReadAllBytes("todayFriendsCount.dat"), 0);
                }
                set { File.WriteAllBytes("todayFriendsCount.dat", BitConverter.GetBytes(value)); }
            }
    
            public bool IsHandled
            {
                get
                {
                    if (!File.Exists("HandledSign.dat"))
                    {
                        File.WriteAllBytes("HandledSign.dat", BitConverter.GetBytes(false));
                    }                
                    return BitConverter.ToBoolean(File.ReadAllBytes("HandledSign.dat"), 0);
                }
                set
                {
                    File.WriteAllBytes("HandledSign.dat", BitConverter.GetBytes(value));
                    this.toolStripLabel_isHandled.Text = this.IsHandled ? "今日已处理" : "今日未处理";
                    this.toolStripLabel_isHandled.ForeColor = this.IsHandled ? Color.Red : Color.Blue;              
                }
            }
    复制代码

     计算按钮事件处理方法 

    复制代码
            private void button1_Click(object sender, EventArgs e)
            {
                //已经处理过
                if (this.IsHandled)
                {
                    DialogResult dialogResult = MessageBox.Show("今日已经执行过,是否还要继续操作?", "提醒", MessageBoxButtons.YesNo);               
                    if (dialogResult == DialogResult.No)
                    {
                        this.ReFocusInput();
                        return;
                    }
                }
              
                if (String.IsNullOrEmpty(this.textBox_todayCount.Text.Trim()))
                {
                    MessageBox.Show("输入不能为空!");
                    this.textBox_todayCount.Focus();
                    return;
                }          
    
                int todayFriendsCountNew = int.Parse(this.textBox_todayCount.Text.Trim());
                int incremeFriendsCount = todayFriendsCountNew - this.TodayFriendsCount;
                this.richTextBox_ShowNewCount.Text = string.Format("今日新加好友:{0} - {1} = {2}",
                                                                    todayFriendsCountNew,
                                                                    this.TodayFriendsCount,
                                                                    incremeFriendsCount);
                Clipboard.SetText(this.richTextBox_ShowNewCount.Text);          
               
                string text = string.Format("{0}   {1}
    ", DateTime.Now.ToShortDateString(), this.richTextBox_ShowNewCount.Text);
                this.AppendFriendsDiary(text);
    
                //重置基础参数
                this.ReSetInitialParameter(todayFriendsCountNew, true);
                //重聚焦输入框
                this.ReFocusInput();
            }
    复制代码

         2.语音备忘功能相关实现

           设计一个byte数组用于存放语音数据

     private Byte[] audioData = new byte[0];

          采集发生时,将声音数据数组拼接到字段数组上。

            void microphoneCapturer_AudioCaptured(byte[] data)
            {
                this.audioData = BufferJointer.Joint(this.audioData, data);
                this.decibelDisplayer1.DisplayAudioData(data);
            }

          停止录制时写入文件

    复制代码
            private void button_stop_Click(object sender, EventArgs e)
            {
                this.microphoneCapturer.Stop();//停止采集
                this.originalFileManager.WriteFile(this.audioData);//写文件
                this.LoadAduioFileList();
                this.ShowWorkStatus(false);
            }
    复制代码

           播放选中文件

    复制代码
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                if (this.ExamineSelectNull())
                {
                    return;
                }
                this.audioPlayer.Play(this.originalFileManager.ReadFile(this.toolStripComboBox1.SelectedText));
            }
    复制代码

           转录为MP3文件

    复制代码
            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                if (this.ExamineSelectNull())
                {
                    return;
                }
    
                this.MakeAudioFile();
    
                DialogResult dialogResult = MessageBox.Show("转存成功,是否打开目录查看?", "提醒", MessageBoxButtons.YesNo);
                if (dialogResult == System.Windows.Forms.DialogResult.Yes)
                {
                    this.mP3FileManager.OpenDirectory();
                }
            }
    复制代码

    五.源码下载

             下载: 客服备忘系统(包含语音备忘功能、语音播放功能、并能将语音文件转录成MP3)

  • 相关阅读:
    他扎根农村种植双孢菇,从门外汉成为了“土专家”
    农村小伙成立生态农业基地,带领村民打开致富新门路
    小伙让蜜柚成为真正的“黄金柚”,帮助600多农户发家致富
    js时间格式化函数,支持Unix时间戳
    js时间格式化函数,支持Unix时间戳
    js时间格式化函数,支持Unix时间戳
    js时间格式化函数,支持Unix时间戳
    Netty随记之ChannelInboundHandlerAdapter、SimpleChannelInboundHandler
    Netty随记之ChannelInboundHandlerAdapter、SimpleChannelInboundHandler
    Netty随记之ChannelInboundHandlerAdapter、SimpleChannelInboundHandler
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5319925.html
Copyright © 2020-2023  润新知