运用mfc实现语音的采集能绘制出语音信号的图像么

运用mfc实现语音的采集能绘制出语音信号的图像么,第1张

在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播放器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9382783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存