gpt4 book ai didi

matlab - 在Matlab中分割音频文件

转载 作者:行者123 更新时间:2023-12-03 00:05:21 24 4
gpt4 key购买 nike

我正在尝试使用Matlab将音频文件拆分为30毫秒不相交的间隔。我现在有以下代码:

clear all
close all

% load the audio file and get its sampling rate
[y, fs] = audioread('JFK_ES156.wav');

for m = 1 : 6000
[t(m), fs] = audioread('JFK_ES156.wav', [(m*(0.03)*fs) ((m+1)*(0.03)*fs)]);
end

但是问题是我得到以下错误:
In an assignment  A(I) = B, the number of elements in B and I
must be the same.

Error in splitting (line 12)
[t(m), fs] = audioread('JFK_ES156.wav', [(m*(0.03)*fs)
((m+1)*(0.03)*fs)]);

我不明白为什么B和I中的元素数量不匹配以及如何解决这个问题。我如何克服这个错误?还是有一种更简单的方法来分割音频文件(也许是我不知道的其他功能)?

最佳答案

您应该只使用变量y并对其进行整形以形成分离的音频。例如,

chunk_size = fs*0.03;
y_chunks = reshape(y, chunk_size, 6000);

这将为您提供一个矩阵,每列有30 ms的块。此代码也比循环读取文件中的小片段要快。

正如hiandbaii所建议的那样,您也可以使用单元阵列。确保在此之前清除现有变量。不清除数组t可能是您收到错误“将单元格内容分配给非单元格数组对象”的原因。

最初的错误是因为无法使用标量索引分配 vector 。也就是说,“m”是一个标量,但是您的audioread调用正在返回一个 vector 。这就是错误说明I和B大小不符的原因。您也可以通过将t设置为二维数组并使用诸如
[t(m,:), fs] = 

关于matlab - 在Matlab中分割音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29905701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com