
在matlab中怎样对声卡进行实时采集数据对语音信号采集,有两种方法来实现。方法一:采用对声卡产生一个模拟输入对象的方式进行采集。数据采集过程可以分为四步:1)初始化。Matlab将声卡等设备都作对象处理,其后的一切 *** 作都不与硬件直接相关,而是通过对该对象的 *** 作来作用于硬件设备,所以首先要对声卡产生一个模拟输入对象:ai=analoginput(’winsound’);ai——Matlab中的变量,它是一个模拟输入设备对象句柄,所有的数据采集过程都是通过对该句柄的 *** 作来实现;analoginput()——模拟输入设备对象建立函数,通过该函数将A/D转换硬件映射为Matlabworkspace中的一个模拟输入设备对象句柄;winsound——声卡设备驱动程序,Matlab软件内含该驱动程序。2)配置。给ai对象添加通道,设置采样频率。addchannel(ai,1);%添加通道fs=8000;%采样频率设置为8KHzaiSampleRate=fs;%设置采样频率3)采样。启动设备对象,开始采集数据。t=2s;%设定采样时间start(ai);%启动设备对象data=get(ai,tfs);%获得采样数据4)终止。停止对象并删除对象。stop(ai);delete(ai);这样便完成了一次完整的数据采集过程,采样频率和采样时间都是由用户输入的,十分方便。方法二:是直接利用MATLAB数据采集箱中提供的的函数命令进行采集,即wavrecord。wavrecord是利用Windows音频输入设备记录声音,其调用格式为:y=wavrecord(n,fs,ch,dtype);本命令是得到数字化的语音数据串,,可直接作为Matlab变量参与各种运算,式中n为采样的点数,决定了录音长度;fs为采样频率,默认值为11025Hz,还可根据要求自己选择合适的采样率;ch为声道数,默认值为1,表示单声道,如果指定为2,则采样为双声道立体声数据;dtype为采样数据的存储格式,用字符串指定,可以是‘double’、‘single’、‘int16’、‘int8’,指定存储格式的同时也就规定了每个采样值量化的精度,int8对应8位精度采样,其他都是16位采样精度。使用Matlab的wavread函数也可以采集语音。不过wavread函数只能读取计算机中已有的、扩展名为“wav”的声音文件。其调用形式为:y=wavread(file)
ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。
如果您使用的是Windows *** 作系统,您或许会注意到一些以OCX结尾的文件。OCX代表“对象链接与嵌入控件”(OLE),这个技术是 Microsoft提出的程序技术,用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。
组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或PowerBuilder,甚至一些技术性语言如VBScript。
目前,ActiveX控件在Windows 95/NT和Macintosh中运行,Microsoft还准备支持UNIX的ActiveX控件。
ActiveX组件包括如下几类:
1自动化服务器:可以由其他应用程序编程驱动的组件。自动化服务器至少包括一
个,也许是多个供其他应用程序生成和连接的基于IDispatch的接口。自动化服务器
可以含有也可以没有用户界面(UI),这取决于服务器的特性和功能。
2自动化控制器:那些使用和 *** 纵自动化服务器的应用程序。
3控件:ActiveX控件等价于以前的OLE控件或OCX。一个典型的控件包括设计时和运
行时的用户界面,唯一的IDispatch接口定义控件的方法和属性,唯一的
IConnectionPoint接口用于控件可引发的事件。
4文档:ActiveX文档,即以前所说的DocObect,表示一种不仅仅是简单控件或自动
化服务器的对象。ActiveX文档在结构上是对OLE链接和模型的扩展,并对其所在的
容器具有更多控制权。一个最显著的变化是菜单的显示方式。一个典型的OLE文档的
菜单会与容器菜单合并成一个新的集合,而ActiveX文档将替换整个菜单系统,只表
现出文档的特性而不是文档与容器共同的特性。
5容器:ActiveX容器是一个可以作为自动化服务器、控件和文档宿主的应用程序1 Flash Player ActiveX Control 60470
与FLASH 60配套的浏览器端动画播放插件
downloadpchomenet/development/activex/551html
2 ACE Mega Codec Pack Professional 603
目前互联网上最齐全的多媒体文件播放插件CoDecS、ActiveXFilterS和其他应用程序(基于
>
1、有些奇怪,为什么你要用8k录制却用16k播放?
2、把8k的数据用16k播放,时间会缩短一半,对应的,相当于频率加倍,所以声音会变高。
3、解决的办法是,对数据进行插值,增加一倍的数据,变成16k的数据再播放就没问题了。
用循环或者定时器 隔一段时间读取数据绘图?
t = timer('TimerFcn',@callback, 'Period', 100);
set(t, 'ExecutionMode', 'FixedSpacing')
start(t)
%%数据满足要求后
stop(t)
delete(t)
function callback(obj, event, string_arg)
ai=analoginput('winsound');
addchannel(ai,1);
aisamplerate=11000;
aitriggertype='immediate';
start(ai);
[data,time,abstime,events] = getdata(ai);
plot(data);
只要+ - /的是吧?
#include<stdioh>
int main(void)
{
char ch;
int a,b;
printf("Enter formula:");
scanf("%d%c%d",&a,&ch,&b);
switch(ch)
{
case '+':printf("%d+%d=%d\n",a,b,a+b);break;
case '-':printf("%d-%d=%d\n",a,b,a-b);break;
case '':printf("%d%d=%d\n",a,b,ab);break;
case '/':printf("%d/%d=%d\n",a,b,a/b);
}
}
这是我自己曾经写的一段代码,希望对你有借鉴
clc;
fs=8000;
channel=1;
t=5;
fprintf('按任意键后开始 %d 秒录音:',t);
pause;
fprintf('录音中');%文字提示
y=wavrecord(tfs, fs,channel,'double');%录制语音信号
fprintf('录音结束\n');%文字提示
wavwrite(y,fs,'d:\matlabwav');% 存储录音信号,先创建文件
fprintf('按任意键后回放:');
pause;
wavplay(y,fs);
[y, Fs, nbits] = wavread('d:\matlabwav')
N=length(y);%求语音信号的长度
Y=fft(y,N); %傅里叶变换
subplot(2,2,1);
plot(y); title('原始信号波形');
subplot(2,2,2);
plot(abs(Y)); title('原始信号频谱');
以上就是关于运用mfc实现语音的采集能绘制出语音信号的图像么全部的内容,包括:运用mfc实现语音的采集能绘制出语音信号的图像么、ACTIVE X是什么东西、matlab 采集为8khz 设计一个16khz播放器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)