【问题标题】:How do i play back a sampled audio file at the same speed as the original?如何以与原始文件相同的速度播放采样音频文件?
【发布时间】:2010-12-28 21:44:30
【问题描述】:

问题如标题所述。

在我抽取一个音频信号后,它会以 n 个因子依次加快音频剪辑的速度。我希望抽取的剪辑和原始剪辑的时间长度相同。

这是我的代码,分析和抽取钢琴 .wav

[piano,fs]=wavread('piano.wav'); % loads piano
play=piano(:,1); % Renames the file as "play"

t = linspace(0,time,length(play));          % Time vector
x = play;
y = decimate(x,2);

stem(x(1:30)), axis([0 30 -2 2])   % Original signal
title('Original Signal')
figure
stem(y(1:30))                        % Decimated signal
title('Decimated Signal')

%changes the sampling rate

fs1 = fs/2;
fs2 = fs/3;
fs3 = fs/4;
fs4 = fs*2;
fs5 = fs*3;
fs6 = fs*4;

wavwrite(y,fs,'PianoDecimation');

可能的解决方案:将剩余的每个点加倍,因为新的抽取剪辑比原始剪辑短 2 倍。

我只是希望能够对这两个剪辑进行并排比较。

这里是音频文件:http://www.4shared.com/audio/11xvNmkd/piano.html

【问题讨论】:

    标签: matlab audio signal-processing sampling


    【解决方案1】:

    虽然@sage 的回答有很多很好的信息,但我认为问题的答案很简单,只需将最后一行更改为:

     wavplay(y,fs/2,'PianoDecimation')
    

    您已删除文件中一半的样本,因此为了在与原始文件相同的时间段内播放它,您需要将播放频率设置为每秒一半的样本数。

    【讨论】:

      【解决方案2】:

      您是否使用 wavplay、audioplayer 或其他工具来播放抽取的信号?您是否明确指定了采样频率?

      函数将采样频率作为参数之一(第二个参数)。您在抽取时会降低采样频率,因此您需要相应地更新该参数。

      此外,当您绘制数据时,您应该:

      1. 在原始数据上绘制 N 倍的点(抽取 N 时)
      2. 提供相应的 x 轴输入 - 我建议 t = (1/Fs:1/Fs:maxT) 其中 maxT 是您要绘制的最长时间,如果您使用更新后的 Fs,它将解决 #1,这将导致更大的时间步长(如果它与您的信号不匹配,请确保转置 t)

      我添加了一个播放啁啾和抽取啁啾的示例(此啁啾是标准 MATLAB 安装的一部分)。我放大了抽取的版本。 tic 和 toc 表明经过的时间是相等的(在处理器负载等变化范围内) - 请注意,这也适用于 decim = 3 等:

      负载啁啾 inWav = y; inFs = Fs; 小数 = 2; outWav = decimate(inWav,decim); outFs = inFs/十进制; tic, wavplay(inWav,inFs),toc 暂停(0.2) tic,wavplay(outWav*decim^2,outFs),toc

      'decimate' 函数确实弄乱了啁啾声(其采样率一开始并不是很高的频率),但也许你正试图展示这样的东西......

      【讨论】:

      • 嗯 .wav 文件保存到我的 matlab 文件夹中,这就是我正在播放的文件。 wavwrite(y,fs,'PianoDecimation'); .我只是想让它和我原来的长度一样。
      • 等待我所要做的就是 wavwrite(y,fs/2,'PianoDecimation'); ?
      • 我可能误解了你的问题。如果您的问题是“如何在抽取后编写 wav 文件......?”那么您想使用命令的 wavwrite(y,Fs,filename) 形式,如帮助文件中所示。我上面的例子使用 MATLAB 内置的 wavplay 播放声音文件。
      • 不,我知道如何编写我之前代码中的 wav 文件。
      猜你喜欢
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多