【问题标题】:Create single .mat file by using multiple wave signal使用多波信号创建单个 .mat 文件
【发布时间】:2013-04-21 04:03:26
【问题描述】:

我想使用 Matlab 工具箱为自动语音识别准备训练和测试集。我已经有包含几个录制音频(.wav)的样本集。我是 Matlab 的新手。为了使用工具箱,我需要创建保存在 .mat 文件中的训练广告测试集。问题是如何创建包含所有音频的单个 .mat 文件?谢谢一百万。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    要创建不相交的训练和测试集,最好的方法是使用crossvalind 命令。因此它执行k-fold 的交叉验证,其中k 是作为输入给出的参数。如果k=51/5th 数据用于测试,4/5th 数据用于训练。代码如下:

     data=randi(20,[500 20]); %creating random data with 500 rows and 20 columns.
     indices=crossvalid('Kfold',size(data,1),5);
     test = (indices == 2); %you can put any number between 1 to 5
     train = ~test;
     trainData=data(train,:);
     testData=data(test,:); 
     savefile='dataFile.mat'
     save(savefile,'trainData','testData');
    

    如果您将数字 2 更改为其他数字,您将获得具有相同分布的训练测试数据,并且每次都是随机的。你也可以把它放在一个 for 循环中,但是为了保存,你需要使用一些技巧或者通过在每个点放置一个断点来手动完成,以避免数据被覆盖。这是创建训练测试集的通用技术。我希望您能够将其应用于您的问题。

    【讨论】:

    • 您好,感谢您的回复。我尝试运行编码,但出现此错误:未定义函数 'crossvalid' 用于类型为 'char' 的输入参数。我该如何解决这个错误?谢谢
    • 嗨@Parag,我很抱歉,我忽略了您的评论中应该是crossvalind 的crossvalid 的拼写。我运行编码,它给了我测试和训练集,但有(100x20 用于测试数据)和(400x20 用于训练数据)。如何更改编码以便我可以将波形信号输入到 .mat 文件中?假设我有 100 个 .wav 信号用于测试,100 个用于训练数据。 (例如:voice001.wav、voice002.wav、voice003.wav)。非常感谢您的帮助。非常感谢
    • 所以您将拥有100x20 训练数据和相同数量的测试数据,对吗?那我给了save这个命令,不就达到目的了吗?
    • 嗨,帕拉格,非常感谢,我将保存命令与我在互联网某处获得的命令结合起来:for k=1:3 htrain{k}=wavread(sprintf('%d.wav' ,k)); end savefile='training_list.mat' save(savefile,'htrain') for k1=4:6 htrain1{k1}=wavread(sprintf('%d.wav',k1));结束 savefile1='testing_list.mat'; save(savefile,'htrain1')... 它对我有帮助。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多