最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)電腦麥克風(fēng)錄音

 更新時間:2021年07月26日 11:15:38   作者:qq53716684  
這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)電腦麥克風(fēng)錄音,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本實例通過Naudio庫完成麥克風(fēng)錄音并把PCM脈沖信號保存成wav音頻文件。關(guān)于音頻的采樣率、比特率、聲道等問題請查閱相關(guān)資料,本示例不做解釋。Naudio庫 請從NuGet搜索并下載。

錄音接口類:

public interface ISpeechRecorder
    {
        void SetFileName(string fileName);
        void StartRec();
        void StopRec();
    }

錄音實現(xiàn)類:

using System;
using NAudio.Wave;

namespace Test
{
    class NAudioRecorder : ISpeechRecorder
    {

        public WaveIn waveSource = null;
        public WaveFileWriter waveFile = null;
        private string fileName = string.Empty;

        /// <summary>
        /// 第二步:開始錄音
        /// </summary>
        public void StartRec()
        {
            try
            {
                waveSource = new WaveIn();//保證電腦有麥克接入否則報錯。
                waveSource.WaveFormat = new WaveFormat(16000, 16, 1); // 16KHz,16bit,單聲道的錄音格式

                waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
                waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);

                waveFile = new WaveFileWriter(fileName, waveSource.WaveFormat);

                waveSource.StartRecording();
            }
            catch(Exception e)
            {
                throw new Exception(e.Message);
            }
            
        }

        /// <summary>
        /// 第三步:停止錄音
        /// </summary>
        public void StopRec()
        {
            waveSource.StopRecording();

            // Close Wave(Not needed under synchronous situation)
            if (waveSource != null)
            {
                waveSource.Dispose();
                waveSource = null;
            }

            if (waveFile != null)
            {
                waveFile.Dispose();
                waveFile = null;
            }
        }

        /// <summary>
        /// 第一步:設(shè)置錄音結(jié)束后保存的文件路徑
        /// </summary>
        /// <param name="fileName">保存wav文件的路徑名</param>
        public void SetFileName(string fileName)
        {
            this.fileName = fileName;
        }

        /// <summary>
        /// 開始錄音回調(diào)函數(shù)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void waveSource_DataAvailable(object sender, WaveInEventArgs e)
        {
            if (waveFile != null)
            {
                waveFile.Write(e.Buffer, 0, e.BytesRecorded);
                waveFile.Flush();
            }
        }

        /// <summary>
        /// 錄音結(jié)束回調(diào)函數(shù)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
        {
            if (waveSource != null)
            {
                waveSource.Dispose();
                waveSource = null;
            }

            if (waveFile != null)
            {
                waveFile.Dispose();
                waveFile = null;
            }
        }
    }
}

調(diào)用方法:

NAudioRecorder nar=new NAudioRecorder();
nar.SetFileName(@"d:\naudio.wav");
nar.StartRec();

nar.StopRec();

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

额尔古纳市| 绩溪县| 天全县| 子洲县| 鄱阳县| 正蓝旗| 中阳县| 英吉沙县| 柳州市| 简阳市| 大宁县| 九台市| 安福县| 宝丰县| 临高县| 永仁县| 读书| 汾西县| 周口市| 桓仁| 镇赉县| 永定县| 芒康县| 普格县| 铅山县| 盐边县| 阿鲁科尔沁旗| 航空| 鄂伦春自治旗| 淄博市| 马关县| 新余市| 西平县| 铁力市| 武宣县| 兴义市| 福贡县| 石首市| 平潭县| 井陉县| 益阳市|