精华内容
下载资源
问答
  • 系统之家提供全面的win8系统使用教程,今天小编主要讲一下录音功能的使用!  方法一:在正常桌面中,按键盘的 F3 按键,键入“录音机”并回车搜索,然后点击选择“录音机”。  方法二:使用组合热键“Win+R”...

    微软新出的windows8系统想必有很多用户已经安装上了吧,不过win8系统的强大功能您都摸透了吗!系统之家提供全面的win8系统使用教程,今天小编主要讲一下录音功能的使用!

      方法一:在正常桌面中,按键盘的 F3 按键,键入“录音机”并回车搜索,然后点击选择“录音机”。

    Win8系统自带录音功能使用教程 三联

      方法二:使用组合热键“Win+R”调出运行对话框,输入“soundrecorder”,Windows8官方下载确定后打开“录音机”程序。

    Win8系统自带录音功能使用教程图-2

      方法三:在Metro界面,然后单击鼠标右键,点击屏幕下方出现的“所有程序”,在“所有程序”界面,找到Windows附件里的“录音机”。

    Win8系统自带录音功能使用教程图-3

      录音机程序界面如下图所示:

    Win8系统自带录音功能使用教程图-4

      小编提示:

      经测试,Windows 8技术预览版和消费者预览版打开录音机后,Xp系统下载2012按 F1 打开帮助时会出现应用程序出错。

    转载于:https://www.cnblogs.com/haowindowsxiazai/archive/2013/01/26/2877807.html

    展开全文
  • 1、首先要使用Microsoft.DirectX.DirectSound和Microsoft.DirectX这两个dll进行录音,需要先安装microsoft directx 9.0cz这个组件, ...2、编写录音程序功能 1)编写录音支持的辅助类SoundRecord 源码: u

    1、首先要使用Microsoft.DirectX.DirectSound和Microsoft.DirectX这两个dll进行录音,需要先安装microsoft directx 9.0cz这个组件,

    百度云盘下载地址:http://pan.baidu.com/s/1bpgbdP9,里面包含安装程序和两个dll

    2、编写录音程序功能

    1)编写录音支持的辅助类SoundRecord

    源码:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using System.IO;
    using Microsoft.DirectX;
    using Microsoft.DirectX.DirectSound;

    namespace SoundRecord
    {
        public class SoundRecord
        {
            // 对DirectSound的支持
            int cNotifyNum = 16;       // 缓冲队列的数目
            int mNextCaptureOffset = 0;      // 该次录音缓冲区的起始点
            int mSampleCount = 0;            // 录制的样本数目
            int mNotifySize = 0;             // 每次通知大小
            int mBufferSize = 0;             // 缓冲队列大小
            string mFileName = string.Empty;     // 文件名
            FileStream mWaveFile = null;         // 文件流
            BinaryWriter mWriter = null;         // 写文件
            Capture mCapDev = null;              // 音频捕捉设备
            CaptureBuffer mRecBuffer = null;     // 缓冲区对象
            Notify mNotify = null;               // 消息通知对象
            WaveFormat mWavFormat;                       // 录音的格式
            Thread mNotifyThread = null;                 // 处理缓冲区消息的线程
            AutoResetEvent mNotificationEvent = null;    // 通知事件

            /// <summary>
            /// 构造函数,设定录音设备,设定录音格式.
            /// </summary>
            public SoundRecord()
            {
                // 初始化音频捕捉设备
                InitCaptureDevice();
                // 设定录音格式
                mWavFormat = CreateWaveFormat();
            }

            /// <summary>
            /// 设定录音结束后保存的文件,包括路径
            /// </summary>
            /// <param name="filename">保存wav文件的路径名</param>
            public void SetFileName(string filename)
            {
                mFileName = filename;
            }

            /// <summary>
            /// 开始录音
            /// </summary>
            public void RecStart()
            {
                // 创建录音文件
                CreateSoundFile();
                // 创建一个录音缓冲区,并开始录音
                CreateCaptureBuffer();
                // 建立通知消息,当缓冲区满的时候处理方法
                InitNotifications();
                mRecBuffer.Start(true);
            }

            /// <summary>
            /// 停止录音
            /// </summary>
            public void RecStop()
            {
                // 关闭通知消息
                if (null != mNotificationEvent)
                    mNotificationEvent.Set();
                // 停止录音
                mRecBuffer.Stop();

                // 写入缓冲区最后的数据
                RecordCapturedData();

                // 回写长度信息
                mWriter.Seek(4, SeekOrigin.Begin);
                mWriter.Write((int)(mSampleCount + 36));   // 写文件长度
                mWriter.Seek(40, SeekOrigin.Begin);
                mWriter.Write(mSampleCount);                // 写数据长度
                mWriter.Close();
                mWaveFile.Close();
                mWriter = null;
                mWaveFile = null;
            }

            /// <summary>
            /// 初始化录音设备,此处使用主录音设备.
            /// </summary>
            /// <returns>调用成功返回true,否则返回false</returns>
            bool InitCaptureDevice()
            {
                // 获取默认音频捕捉设备
                CaptureDevicesCollection devices = new CaptureDevicesCollection(); // 枚举音频捕捉设备
                Guid deviceGuid = Guid.Empty;                                       // 音频捕捉设备的ID
                if (devices.Count>0)
                    deviceGuid = devices[0].DriverGuid;

                else
                {
                    MessageBox.Show("系统中没有音频捕捉设备");
                    return false;
                }

                // 用指定的捕捉设备创建Capture对象
                try
                {
                    mCapDev = new Capture(deviceGuid);
                }
                catch(DirectXException e)
                {
                    MessageBox.Show(e.ToString());
                    return false;
                }
                return true;
            }

            /// <summary>
            /// 创建录音格式,此处使用16bit,16KHz,Mono的录音格式
            /// </summary>
            /// <returns>WaveFormat结构体</returns>
            private WaveFormat CreateWaveFormat()
            {
                WaveFormat format = new WaveFormat();
                format.FormatTag = WaveFormatTag.Pcm;   // PCM
                format.SamplesPerSecond = 16000;        // 16KHz
                format.BitsPerSample = 16;              // 16Bit
                format.Channels = 1;                    // Mono
                format.BlockAlign = (short)(format.Channels * (format.BitsPerSample / 8));
                format.AverageBytesPerSecond = format.BlockAlign * format.SamplesPerSecond;
                return format;
            }

            /// <summary>
            /// 创建录音使用的缓冲区
            /// </summary>
            private void CreateCaptureBuffer()
            {
                // 缓冲区的描述对象
                CaptureBufferDescription bufferdescription = new CaptureBufferDescription();
                if (null != mNotify)
                {
                    mNotify.Dispose();
                    mNotify = null;
                }
                if (null != mRecBuffer)
                {
                    mRecBuffer.Dispose();
                    mRecBuffer = null;
                }
                // 设定通知的大小,默认为1s钟
                mNotifySize = (1024 > mWavFormat.AverageBytesPerSecond / 8) ? 1024 : (mWavFormat.AverageBytesPerSecond / 8);
                mNotifySize -= mNotifySize % mWavFormat.BlockAlign;  

                // 设定缓冲区大小
                mBufferSize = mNotifySize * cNotifyNum;

                // 创建缓冲区描述           
                bufferdescription.BufferBytes = mBufferSize;
                bufferdescription.Format = mWavFormat;           // 录音格式

                // 创建缓冲区
                mRecBuffer = new CaptureBuffer(bufferdescription, mCapDev);
                mNextCaptureOffset = 0;
            }

            /// <summary>
            /// 初始化通知事件,将原缓冲区分成16个缓冲队列,在每个缓冲队列的结束点设定通知点.
            /// </summary>
            /// <returns>是否成功</returns>
            private bool InitNotifications()
            {
                if (null == mRecBuffer)
                {
                    MessageBox.Show("未创建录音缓冲区");
                    return false;
                }       

                // 创建一个通知事件,当缓冲队列满了就激发该事件.
                mNotificationEvent = new AutoResetEvent(false);
                // 创建一个线程管理缓冲区事件
                if (null == mNotifyThread)
                {
                    mNotifyThread = new Thread(new ThreadStart(WaitThread));
                    mNotifyThread.Start();
                }

                // 设定通知的位置
                BufferPositionNotify[] PositionNotify = new BufferPositionNotify[cNotifyNum + 1];
                for (int i = 0; i < cNotifyNum; i++)
                {
                    PositionNotify[i].Offset = (mNotifySize * i) + mNotifySize - 1;
                    PositionNotify[i].EventNotifyHandle = mNotificationEvent.Handle;               
                }

                mNotify = new Notify(mRecBuffer);
                mNotify.SetNotificationPositions(PositionNotify, cNotifyNum);
                return true;
            }

            /// <summary>
            /// 将录制的数据写入wav文件
            /// </summary>
            private void RecordCapturedData()
            {
                byte[] CaptureData = null;
                int ReadPos;
                int CapturePos;
                int LockSize;
                mRecBuffer.GetCurrentPosition(out CapturePos, out ReadPos);
                LockSize = ReadPos - mNextCaptureOffset;
                if (LockSize < 0)
                    LockSize += mBufferSize;

                // 对齐缓冲区边界,实际上由于开始设定完整,这个操作是多余的.
                LockSize -= (LockSize % mNotifySize);
                if (0 == LockSize)
                    return;         

                // 读取缓冲区内的数据
                CaptureData = (byte[])mRecBuffer.Read(mNextCaptureOffset, typeof(byte), LockFlag.None, LockSize);
                // 写入Wav文件
                mWriter.Write(CaptureData, 0, CaptureData.Length);
                // 更新已经录制的数据长度.
                mSampleCount += CaptureData.Length;
                // 移动录制数据的起始点,通知消息只负责指示产生消息的位置,并不记录上次录制的位置
                mNextCaptureOffset += CaptureData.Length;
                mNextCaptureOffset %= mBufferSize; // Circular buffer
            }

            /// <summary>
            /// 接收缓冲区满消息的处理线程
            /// </summary>
            private void WaitThread()
            {
                while(true)
                {
                    // 等待缓冲区的通知消息
                    mNotificationEvent.WaitOne(Timeout.Infinite, true);
                    // 录制数据
                    RecordCapturedData();
               }
            }

            /// <summary>
            /// 创建保存的波形文件,并写入必要的文件头.
            /// </summary>
            private void CreateSoundFile()
            {
                // Open up the wave file for writing.
                mWaveFile = new FileStream(mFileName, FileMode.Create);
                mWriter = new BinaryWriter(mWaveFile);

                // Set up file with RIFF chunk info.
                char[] ChunkRiff = {'R','I','F','F'};
                char[] ChunkType = {'W','A','V','E'};
                char[] ChunkFmt = {'f','m','t',' '};
                char[] ChunkData = {'d','a','t','a'};
            
                short shPad = 1;                // File padding
                int nFormatChunkLength = 0x10; // Format chunk length.
                int nLength = 0;                // File length, minus first 8 bytes of RIFF description. This will be filled in later.
                short shBytesPerSample = 0;     // Bytes per sample.

                // 一个样本点的字节数目
                if (8 == mWavFormat.BitsPerSample && 1 == mWavFormat.Channels)
                    shBytesPerSample = 1;
                else if ((8 == mWavFormat.BitsPerSample && 2 == mWavFormat.Channels) || (16 == mWavFormat.BitsPerSample && 1 == mWavFormat.Channels))
                    shBytesPerSample = 2;
                else if (16 == mWavFormat.BitsPerSample && 2 == mWavFormat.Channels)
                    shBytesPerSample = 4;

                // RIFF 块
                mWriter.Write(ChunkRiff);
                mWriter.Write(nLength);
                mWriter.Write(ChunkType);

                // WAVE块
                mWriter.Write(ChunkFmt);
                mWriter.Write(nFormatChunkLength);
                mWriter.Write(shPad);
                mWriter.Write(mWavFormat.Channels);
                mWriter.Write(mWavFormat.SamplesPerSecond);
                mWriter.Write(mWavFormat.AverageBytesPerSecond);
                mWriter.Write(shBytesPerSample);
                mWriter.Write(mWavFormat.BitsPerSample);          

                // 数据块
                mWriter.Write(ChunkData);
                mWriter.Write((int)0);   // The sample length will be written in later.
            }
        }
    }

    2)调用方法的winform界面源码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    using System.Threading;
    using System.IO;
    using Microsoft.DirectX;
    using Microsoft.DirectX.DirectSound;

    namespace SoundRecord
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private SoundRecord recorder = new SoundRecord();

            private void btnStart_Click(object sender, EventArgs e)
            {
                string wavfile = null;
                wavfile = "test.wav";
                recorder.SetFileName(wavfile);
                recorder.RecStart();
            }

            private void btnStop_Click(object sender, EventArgs e)
            {
                recorder.RecStop();
                recorder = null;
            }   
        }
    }

    3)winform界面图

    4)生成后的录音文件,在项目bin目录下

    5)用播放器播放录音文件

    附录:

    录音的demo源码下载地址:http://pan.baidu.com/s/1hslW5Je

    平时多记记,到用时才能看看,记录你的进步,分享你的成果




    from: https://www.cnblogs.com/xielong/p/5710294.html


    展开全文
  • Screamer Radio是一个免费的网络收录音机,使用者只要在安装后,就能够通过 Screamer Radio 来收听数千个不同的音乐电台,不论是汉语,英语,日语……以及各国的广播,只需轻轻一按,全都能收听。而且,Screamer ...
  • Sky拨拨录音是一款非常实用的通话录音软件。软件支持大多数的音频格式,录制的过程中会关闭影响...Sky拨拨录音是一款免费的Skype通话录音软件,它简单易用,功能强大,支持双向录音,支持的录音格式有mp3,wma,ogg,fl
  • Alternate Quick Audio不仅仅是一个录音工具,还是一个简单的音频播放器,可以播放WAV、MP3格式音频,还是一个音频转换工具,支持WAV、MP3、OGG、AAC、WMA等常用音频格式之间的互相转换,需要的朋友快来下载使用吧。...
  • 提供电话录音功能,当电话接通时开始录音,当电话挂断时结束录音。 提供录音管理功能,可以通过程序修改录音文件的存储位置。 操作注意事项: 本系统默认操作员用户名为:tsoft,密码为:111。 本系统使用的是...
  • 13. 增强录音界面易用性,提供了简化功能/全部功能显示切换,并重排位置。 14. 增强录音界面易用性,调整了部分显示元素的位置。 15. 效果插件的对话框不再是独立的一个任务栏按钮。 16. 所有的进度统一为100。 17. ...
  • 记者朋友们,文字工作者朋友们,是不是觉得在一些需要记录对话的时候。记录的速度经常跟不上对话的速度,选择了将对话进行录,可是自己听译转写还是非常的浪费时间。...在将这个软件下载安装找到手机之后,...

    记者朋友们,文字工作者朋友们,是不是觉得在一些需要记录对话的时候。记录的速度经常跟不上对话的速度,选择了将对话进行录,可是自己听译转写还是非常的浪费时间。那么快点看过来,这里准备了一个能够非常的快速将录音转换成文字的方法。
    在这里插入图片描述
    在我们需要将对话等一些声音转换成文字的时候,可以选择在应用市场或者百度直接搜索找到“录音转文字助手”这个应用软件来帮助录音并转换成文字。
    在这里插入图片描述
    在将这个软件下载安装找到手机之后,我们就可以在手机的桌面点击启动这个软件了。在进入到软件的界面之后,可以选择“录音实时转写”这个功能来进行录音和转文字。
    在这里插入图片描述
    点击“录音实时转写”功能之后进入到录音界面,就可以看到在界面的下方有一个蓝色的录音按钮,这个按钮就是开始和暂停录音的按钮。
    在这里插入图片描述
    在录音结束后,可以看到文字也显示在了文本框内。这时就可以对文字和录音进行“复制”“导出”和“翻译”等操作了
    在这里插入图片描述

    展开全文
  • 库乐队安卓版能让你的手机变成一套触控乐器和功能完备的录音工作室,这样无论身处何地,您都能够创作音乐。库乐队下载的实时循环乐段可让每个人轻松变身为 DJ,尽享音乐创作乐趣。库乐队使用 Multi-Touch 手势来弹奏...

    库乐队app--你的掌上录音棚。通过库乐队下载你可在线制作DJ创作音乐,把手机当作乐器演奏,以及随处创作乐曲、分享乐曲等。库乐队安卓版能让你的手机变成一套触控乐器和功能完备的录音工作室,这样无论身处何地,您都能够创作音乐。库乐队下载的实时循环乐段可让每个人轻松变身为 DJ,尽享音乐创作乐趣。库乐队使用 Multi-Touch 手势来弹奏键盘、吉他以及创建节拍,让您比肩专业音乐人,即便您从未演奏过一音半符。连接一把吉他或贝司,您便可以使用经典的放大器和踏脚转盘效果进行弹奏。库乐队安卓版使用触控乐器、麦克风或吉他并立即录制支持多达 32 条轨道的演奏。库乐队下载使用新的声音资源库下载附加的免费乐器、乐段和声音包。库乐队安卓版的音频单元扩展允许您直接弹奏、录制以及将第三方乐器或效果混合到库乐队软件中,然后与亲朋好友分享您的乐曲。太平洋下载中心提供库乐队下载。

    库乐队下载截图

    库乐队下载软件特色:

    1、实时循环乐段、变身DJ创作音乐

    轻点并触发任意实时循环乐段单元格或单元格组;

    从Apple设计的模板开始制作或构建专属网格;

    库乐队下载使用任意触控乐器直接录制到单元格来创建自定乐段;

    库乐队下载使用重混效果演奏出如滤音器和重复器的DJ风格效果;

    轻点录音并采集您的实时循环乐段演奏;

    2、像演奏真实乐器那样玩转您的手机

    在创新的Multi-Touch键盘上弹奏乐器;

    库乐队app使用Alchemy合成器弹奏和录音;

    库乐队下载使用节拍音序器创建灵感来源于经典电子鼓的音乐律动;

    库乐队下载使用声音资源库下载免费的GarageBand乐器、乐段和声音包;

    库乐队下载采集任何声音和应用录音室级别的效果;

    库乐队下载使用虚拟放大器重现传奇式的吉他或贝司声音;

    库乐队下载使用音频单元扩展,直接将第三方音乐应用的演奏录制到GarageBand中;

    3、适用于iOS的鼓手:

    库乐队下载在乐曲中添加虚拟伴奏鼓手,进行指挥并演奏逼真的音乐律动;

    原声、电子鼓手以及打击乐手可供选择;

    每个人物都能创作超过百万首逼真的音乐律动和过门;

    4、通过智能乐器如同音乐家般演奏

    库乐队下载使用智能弦乐器弹奏整个弦乐交响曲;

    库乐队下载使用任意键盘乐器,通过和弦条带和自动弹奏模式进行演奏;

    库乐队下载在原声和电子智能吉他上扫弹和弦或触发模式;

    5、随处创作乐曲

    库乐队下载使用触控乐器、音频录音和乐段来录制、编配和混音乐曲,最多可达32条轨道;

    库乐队下载使用专业的混音效果,包括可视化均衡器、数码失真和过载;

    库乐队安卓版通过整合的注释板为乐曲添加评论或歌词灵感

    库乐队下载截图

    库乐队下载常见问题:

    库乐队安卓版怎么设置铃声?

    第一步我们先将我们的音乐准备好,我们利用我们的百度云盘保存我们的音乐到我们的iCloud云盘。

    第二步打开我们的库乐队安卓版、选择录音机,选择我们录音机的左上角,的第三个按钮,选择我们音频的编辑界面。

    第三步选择我们的右上角的小圆圈,选择我们的音乐。

    第四步选择我们的音乐,在我们的音乐下面。选择浏览文件。选择我们的iCloud文件,在iCloud文件中选择音乐文件。

    第五步选择好了之后,按住音乐拉到我们的编辑界面,选择我们的音乐片段作为我们的铃声。

    第六步选择好之后,我们选择左侧三角,选择我的乐曲,按住后选择分享。

    第七步选择分享后选择电话铃声就可以啦,我们另存下我们音乐名字。最后进入我们设置声音就可以看到我们保存的音乐了。

    库乐队下载截图

    展开全文
  • 树莓派语音识别,对话功能。录音功能,需要pyaudio。pyaudio费点事。但是可以下载安装。树莓派用 atp-get 下载安装pyaudio
  • 第一步,下载FlashMediaServer3.5,网上有很多资源,这里就不提供了,大家google一下就可以了,这里给一个序列号:1373-5209-5319-9982-4515-7002,我用地就是这一个。安装完后,打开FlashMediaServer3.5服务,一个...
  • 市面上的录屏软件,很多都是收费的;或者有的录屏软件在功能上还有所欠缺,要么就是操作不方便……给大家推荐一款免费的、不限时的...一、下载安装软件的官网下载地址是:www.coursemaker.cn;下载后安装,支持win ...
  • 记得华为Android版本5.0时代,手机没有自动录音功能,我一直到网上下载自动通话录音软件,有时甚至是下载ROOT版的带自动通话功能的EMUI版本进行刷机安装。那个时候甚好我肯钻研,在数码方面还有点基础,所以并没有...
  •  在B手机上安装一个APP,那么这个APP要求有如下功能  1、隐藏图标  2、后台一直运行,开机就运行  3、任务管理器不能杀死,即使杀死也能重启动服务  4、有监听电话状态功能  5、有录音
  • SoMud是一款知名的P2P下载工具,SoMud拥有强大的搜索引擎,...媒体文件边下边播 支持HTTP/FTP分段高速下载 支持桌面录像,并分享桌面录制视频 SoMud支持录音功能并生成MP3文件 支持音视频转换插件 创建共享P2P文件 家
  • 目前水果软件最版本是FL Studio 20.8,它让你的计算机就像是全功能录音室,大混音盘,非常先进的制作工具,让你的音乐突破想象力的限制。喜欢音乐制作的小伙伴千万不要错过这个功能强大,安装便捷的音乐软件哦!...
  • FL Studio,常称水果,是一款功能强大的编曲软件,集编曲,录音,剪辑,混音于一身,简单易上手,灵活性高,强大到突破想象。 FL Studio,当前版本 FL Studio20.5,百分之百矢量化,全新设计的混音器,可动态缩放,...
  • 印象笔记是全球闻名的效率软件和知识管理工具...下面就详细介绍印象笔记的功能、以及下载安装使用。主要的功能:如果你是上班族,印象笔记(Evernote)是强大的效率软件,让工作井井有条:- 将工作日志、会议记录、文...
  • 小编是一直使用的一款电脑录音软件,操作简单功能也强大,下面来给大家演示一番! 在百度上搜索迅捷录音软件,然后点击立即下载。点击文件夹按照提示步骤进行安装,我一般都是安装在d盘的。 安装完成后,双击...
  • 1、需要迅捷音频录制工具的辅助,在电脑上安装就行,建议在官网下载下载很方便,没有其他插件等影响; 2、然后双击打开,可以直接看到所有的功能,一目了然,修改录制音频的格式和声音来源,需要高音质可...
  • Android录音并进行本地转码为MP3

    千次阅读 热门讨论 2018-08-18 15:03:59
    开发中需要使用这个功能,只是一个简单的进行转码的工具,具体的代码信息如下 项目的基本结构图 1、下载工具包 下载lame工具包 使用的最新版本 安装NDK环境 2、lame内容复制 首先在 src/main/目录下...
  • 今天小编来教大家两种录音方法,一种是电脑自带的录音功能,一种是通过软件一、电脑自带的录音功能1.点击左下角WIN键2.搜索 "录音机"3.打开录制机,提示需要进行麦克风设置4.点击麦克风设置5.更改麦克风权限,允许...
  • 小程序可以调用手机的录音功能,生成的 .pcm文件但pcm 的播放一般播放器是打不开的,只能百度下:首先可以下载VLC软件并安装 下载地址: https://www.videolan.org/index.zh.html打开mac终端,输入如下命令:➜ out /...
  • Camtasia Studio包含了屏幕录像、视频剪辑和编辑、视频录音配音、视频菜单制作、视频剧场和视频播放等功能。 它可以在任何颜色模式下记录屏幕动作,包括影像、 音效、鼠标移动轨迹,解说声音等等;它支持视频播放和...
  • 大家在使用电脑时,很少会...推荐使用软件:迅捷录音软件PC版1、安装迅捷录音软件,打开迅捷官网,找到软件点击下载下载后点击安装,默认安装到C盘,然后打开软件安装好的图标,这时候有几个功能需要我们设置。2、...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 136
精华内容 54
关键字:

录音功能下载安装