❶ 如何采集麦克风的声音到MATLAB
常用有2种方法:
1:wavrecord函数,比较简单的
Fs = 11025;
y = wavrecord(5*Fs,Fs,'int16');%录制5秒mic声音
wavplay(y,Fs); %播放出来
2:analog input方法
AI = analoginput('winsound');
chan = addchannel(AI,1);
ration = 1; %1 second acquisition
set(AI,'SampleRate',8000)
ActualRate = get(AI,'SampleRate');
set(AI,'SamplesPerTrigger',ration*ActualRate)
set(AI,'TriggerType','Manual')
blocksize = get(AI,'SamplesPerTrigger');
Fs = ActualRate;
start(AI)
trigger(AI)
wait(AI,ration + 1)
data = getdata(AI);
delete(AI)
clear AI
❷ 电脑如何采集声音信号
电脑采集声音信号,其实就是声音采样,声音采样就是把模拟音频转成数字音频的过程,所用到的主要设备便是模拟/数字转换器(Analog to Digital Converter,即ADC,与之对应的是数/模转换器,即DAC)。采样的过程实际上是将通常的模拟音频信号的电信号转换成二进制码0和1,这些0和1便构成了数字音频文件。采样的频率越大则音质越有保证。由于采样频率一定要高于录制的最高频率的两倍才不会产生失真,而人类的听力范围是20Hz~20KHz,所以采样频率至少得是20k×2=40KHz,才能保证不产生低频失真,这也是CD音质采用44.1KHz(稍高于40kHz是为了留有余地)的原因。
❸ 音频信号的采集方式
电台等由于其自办频道的广告、新闻、广播剧、歌曲和转播节目等音频信号电平大小不一,导致节目播出时,音频信号忽大忽小,严重影响用户的收听效果。在转播时,由于传输距离等原因,在信号的输出端也存在信号大小不一的现象。过去,对大音频信号采用限幅方式,即对大信号进行限幅输出,小信号不予处理。这样,仍然存在音频信号过小时,用户自行调节音量,也会影响用户的收听效果。随着电子技术,计算机技术和通信技术的迅猛发展,数字信号处理技术已广泛地深入到人们生活等各个领域。其中语音处理是数字信号处理最活跃的研究方向之一,在IP电话和多媒体通信中得到广泛应用。语音处理可采用通用数字信号处理器DSP和现场可编程门阵列(FPGA) 实现,其中DSP实现方法具有实现简便、程序可移植行强、处理速度快等优点,特别是TI公司TMS320C54X系列在音频处理方面有很好的性价比,能够解决复杂的算法设计和满足系统的实时性要求,在许多领域得到广泛应用。在DSP的基础上对音频信号做AGC算法处理可以使输出电平保持在一定范围内,能够解决不同节目音频不均衡等问题。
TI公司DSP芯片TMS320VC5402具有独特的6总线哈佛结构,使其能够6条流水线同时工作,工作频率达到100MHZ。利用VC5402的2个多通道缓冲串行口(McBSP0和McBSP1)来实现与AIC23的无缝连接。VC5402的多通道带缓冲的串行口在标准串口的基础上加了一个2K的缓冲区。每次串口发送数据时,CPU自动将发送缓冲中的数据送出;而当接收数据时,CPU自动将收到的数据写入接收缓存。在自动缓冲方式下,不需每传送一个字就发一次中断,而是每通过一次缓冲器的边界,才产生中断至CPU,从而减少频繁中断对CPU的影响。
音频芯片采用TLV320 AIC23,它是TI公司的一款高性能立体声音频A/D,D/A放大电路。AIC23的模数转换和数模转换部件高度集成在芯片内部,采用了先进的过采样技术。AIC23的外部硬件接口分为模拟口和数字口。模拟口是用来输入输出音频信号的,支持线路输入和麦克风输入;有两组数字接口,其一是由/CS、SDIN、SCLK和MODE构成的数字控制接口。AIC23是一块可编程的音频芯片,通过数字控制口将芯片的控制字写入AIC23内部的寄存器,如采样率设置,工作方式设置等,共有12个寄存器。音频控制口与DSP的通信主要由多通道缓冲串行口McBSP1来实现。
AIC23通过数字音频口与DSP的McBSP0完成数据的通信,DSP做主机,AIC23做从机。主机提供发送时钟信号BCLKX0和发送帧同步信号BFSX0。在这种工作方式下,接收时种信号BCLKR0和接收帧同步信号BFSR0实际上都是由主机提供的。图1是AIC23与VC5402的接口连接。
AIC23的数字音频接口支持S(通用音顿格式)模式,也支持DSP模式(专与TIDSP连接模式),在此采用DSP模式。DSP模式工作时,它的帧宽度可以为一个bit长。图2是音频信号采集的具体电路图。
电路的设计和布线是信号采集过程中一个很重要的环节,它的效果直接关系到后期信号处理的质量。对于DSP达类高速器件,外部晶体经过内部的PLL倍频以后可达上百兆。这就要求信号线走等长线和绘制多层电路板来消除电磁干扰和信号的反射。在两层板的前提下,可以采取顶层与底层走交叉线、尽量加宽电源线和地线的宽度、电源线成树杈型、模拟区和数字区分开等原则,可以达到比较好的效果。
❹ 如何采集一帧音频
本文重点关注如何在Android平台上采集一帧音频数据。阅读本文之前,建议先读一下我的上一篇文章《Android音频开发(1):基础知识》,因为音频开发过程中,经常要涉及到这些基础知识,掌握了这些重要的概念后,开发过程中的很多参数和流程就会更加容易理解。
Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层,能够更加自由灵活地控制,可以得到原始的一帧帧PCM音频数据。
如果想简单地做一个录音机,录制成音频文件,则推荐使用 MediaRecorder,而如果需要对音频做进一步的算法处理、或者采用第三方的编码库进行压缩、以及网络传输等应用,则建议使用 AudioRecord,其实 MediaRecorder 底层也是调用了 AudioRecord 与 Android Framework 层的 AudioFlinger 进行交互的。
音频的开发,更广泛地应用不仅仅局限于本地录音,因此,我们需要重点掌握如何利用更加底层的 AudioRecord API 来采集音频数据(注意,使用它采集到的音频数据是原始的PCM格式,想压缩为mp3,aac等格式的话,还需要专门调用编码器进行编码)。
1. AudioRecord 的工作流程
首先,我们了解一下 AudioRecord 的工作流程:
(1) 配置参数,初始化内部的音频缓冲区
(2) 开始采集
(3) 需要一个线程,不断地从 AudioRecord 的缓冲区将音频数据“读”出来,注意,这个过程一定要及时,否则就会出现“overrun”的错误,该错误在音频开发中比较常见,意味着应用层没有及时地“取走”音频数据,导致内部的音频缓冲区溢出。
(4) 停止采集,释放资源
2. AudioRecord 的参数配置
上面是 AudioRecord 的构造函数,我们可以发现,它主要是靠构造函数来配置采集参数的,下面我们来一一解释这些参数的含义(建议对照着我的上一篇文章来理解):
(1) audioSource
该参数指的是音频采集的输入源,可选的值以常量的形式定义在 MediaRecorder.AudioSource 类中,常用的值包括:DEFAULT(默认),VOICE_RECOGNITION(用于语音识别,等同于DEFAULT),MIC(由手机麦克风输入),VOICE_COMMUNICATION(用于VoIP应用)等等。
(2) sampleRateInHz
采样率,注意,目前44100Hz是唯一可以保证兼容所有Android手机的采样率。
(3) channelConfig
通道数的配置,可选的值以常量的形式定义在 AudioFormat 类中,常用的是 CHANNEL_IN_MONO(单通道),CHANNEL_IN_STEREO(双通道)
(4) audioFormat
这个参数是用来配置“数据位宽”的,可选的值也是以常量的形式定义在 AudioFormat 类中,常用的是 ENCODING_PCM_16BIT(16bit),ENCODING_PCM_8BIT(8bit),注意,前者是可以保证兼容所有Android手机的。
(5) bufferSizeInBytes
这个是最难理解又最重要的一个参数,它配置的是 AudioRecord 内部的音频缓冲区的大小,该缓冲区的值不能低于一帧“音频帧”(Frame)的大小,而前一篇文章介绍过,一帧音频帧的大小计算如下:
int size = 采样率 x 位宽 x 采样时间 x 通道数
采样时间一般取 2.5ms~120ms 之间,由厂商或者具体的应用决定,我们其实可以推断,每一帧的采样时间取得越短,产生的延时就应该会越小,当然,碎片化的数据也就会越多。
在Android开发中,AudioRecord 类提供了一个帮助你确定这个 bufferSizeInBytes 的函数,原型如下:
int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat);
不同的厂商的底层实现是不一样的,但无外乎就是根据上面的计算公式得到一帧的大小,音频缓冲区的大小则必须是一帧大小的2~N倍,有兴趣的朋友可以继续深入源码探究探究。
实际开发中,强烈建议由该函数计算出需要传入的 bufferSizeInBytes,而不是自己手动计算。
3. 音频的采集线程
当创建好了 AudioRecord 对象之后,就可以开始进行音频数据的采集了,通过下面两个函数控制采集的开始/停止:
AudioRecord.startRecording();
AudioRecord.stop();
一旦开始采集,必须通过线程循环尽快取走音频,否则系统会出现 overrun,调用的读取数据的接口是:
AudioRecord.read(byte[] audioData, int offsetInBytes, int sizeInBytes);
❺ 如何收集音频素材
软件,如Adobe_Audition_
❻ 常见的收集数据的方法有什么
1、调查法
调查方法一般分为普查和抽样调查两大类。
2、观察法
观察法是通过开会、深入现场、参加生产和经营、实地采样、进行现场观察并准确记录(包括测绘、录音、录相、拍照、笔录等)调研情况。主要包括两个方面:一是对人的行为的观察,二是对客观事物的观察。观察法应用很广泛,常和询问法、搜集实物结合使用,以提高所收集信息的可靠性。
3、文献检索
文献检索就是从浩繁的文献中检索出所需的信息的过程。文献检索分为手工检索和计算机检索。
按性质分为:
①定位的,如各种坐标数据;
②定性的,如表示事物属性的数据(居民地、河流、道路等);
③定量的,反映事物数量特征的数据,如长度、面积、体积等几何量或重量、速度等物理量;
④定时的,反映事物时间特性的数据,如年、月、日、时、分、秒等。
按表现形式分为:
①数字数据,如各种统计或量测数据。数字数据在某个区间内是离散的值。
②模拟数据,由连续函数组成,是指在某个区间连续变化的物理量,又可以分为图形数据(如点、线、面)、符号数据、文字数据和图像数据等,如声音的大小和温度的变化等。
❼ 数字化音频的采集的方式有哪些
将音频数字化,其实就是将声音数字化。最常见的方式是透过脉冲编码调制pcm(数字化的最大好处是资料传输与保存的不易失真。记录的资料只要数字大小不改变