首页 > 解决方案 > 我正在尝试从文本文件数据中提取并将其添加到音频读取函数 Matlab

问题描述

我正在从 txt 文件中提取一些数据“名称”,并尝试将该名称用于 audioread() 函数,以便进入 Matlab 位置并打开相应的音频信号 WAV 或 mp3。

 fid = fopen('names.txt','rt');
           text= fscanf(fid,'%s',1);
           index = 0;
           text = fscanf(fid,'%s',1);
           while(strcmp(text,'.')~=1)            
            index = index+1;            
            storeD{index} = text;
            signal=strcat('''',storeD,'.wav''');% or mp3
            x=audioread(signal);
            text = fscanf(fid,'%s',1);
            end
           fclose(fid);

现在的问题是我收到一个错误:预期输入是非缺失字符串标量或字符向量。对于这里的这一行 x=audioread(signal);

标签: matlab

解决方案


我更喜欢将多个音频信号存储在一个结构中,因为它们可以是可变长度并且不能很好地适合数组的一个变量。也只是调整了一些名称解析。我还假设文本文件将被配置为:

名称.txt:

Jacob
Shawn
Sydney
Maria
Joseph
.

如果文件位于名为 Music 的子文件夹中:

./Music/Jacob
./Music/Shawn
./Music/Sydney
./Music/Maria
./Music/Joseph
.

读取数据流程图

根据文件中字符串的格式,可能必须编辑此行:

signal = strcat(storeD,'.wav');% or mp3

MATLAB 脚本:

Signal_Number = 1;
Audio_Signals = struct('Audio_File',[]);

fid = fopen('names.txt','rt');

%Grabbing the first name to start%
index = 1;
text = fscanf(fid,'%s',1);

%Continue to loop%
while(strcmp(text,'.')~=1)   
    
storeD{index} = text;
index = index+1;            
signal = strcat(storeD,'.wav');% or mp3


Audio_Signals(Signal_Number).Audio_File = audioread(signal{1,Signal_Number});
Signal_Number = Signal_Number + 1;
text = fscanf(fid,'%s',1);
end
fclose(fid);

Fs = 44100;
Audio_1 = Audio_Signals(1).Audio_File;
Audio_2 = Audio_Signals(2).Audio_File;
Audio_3 = Audio_Signals(3).Audio_File;

%Playing audio 1%
sound(Audio_3,Fs);

storeD

扩展:根据文本文件名读取 LAB 和 CSV 文件

.LAB 文件的内容

Alex\A23
John\B21
Nick\K36

使用 MATLAB 版本:R2019b


推荐阅读