首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab实时音频处理

Matlab实时音频处理
EN

Stack Overflow用户
提问于 2015-05-07 12:55:04
回答 2查看 6.2K关注 0票数 1

我试图记录我的麦克风输入,并在同一时间处理它。

我尝试了一个循环,里面有这个:

代码语言:javascript
复制
recordblocking(recorder, 1);
y = getaudiodata(recorder);
% any processing on y

但是当我在用y,做一些事情的时候,我失去了信息,因为我没有连续记录。

我能做些什么来不断地记录麦克风中的声音,将其存储在某种缓冲器中,同时处理大量的声音吗?

延迟并不是问题,但我真的需要同时进行记录和处理。

提前感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-07 13:06:56

我认为您应该像这样使用流处理:

代码语言:javascript
复制
% Visualization of audio spectrum frame by frame
Microphone = dsp.AudioRecorder;
Speaker = dsp.AudioPlayer;
SpecAnalyzer = dsp.SpectrumAnalyzer;
tic;
while(toc<30)

audio = step(Microphone);
step(SpecAnalyzer,audio);
step(Speaker, audio);
end

您可以找到更多的信息这里,也可以在这个介绍性中找到。

票数 4
EN

Stack Overflow用户

发布于 2015-11-24 11:55:54

您可以尝试LTFAT code.html中的块处理框架。

编辑:这是代码的主要要点:

代码语言:javascript
复制
   % Basic Control pannel (Java object)
   p = blockpanel({
                  {'GdB','Gain',-20,20,0,21},...
                  });

   % Setup blocktream
   fs = block('playrec','loadind',p);

   % Set buffer length to 30 ms
   L = floor(30e-3*fs);

   flag = 1;
   %Loop until end of the stream (flag) and until panel is opened
   while flag && p.flag
      gain = blockpanelget(p,'GdB');
      gain = 10^(gain/20);

      % Read the block
      [f,flag] = blockread(L);
      % Play the block and do the processing
      blockplay(f*gain);
   end
   blockdone(p);

注意,可以通过向块函数传递附加参数来指定输入和输出设备及其通道。可用的音频设备列表可以通过调用块设备获得。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30101695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档