我在matlab中有一个代码,其中录制语音并保存为.wav文件,名称为say.wav。 但我遇到的问题是,每次运行代码时都会重写.wav文件。但我希望将语音记录到新的.wav文件中。我怎样才能在matlab中做到这一点?
代码是:
Fs = 1E+4;
nBits = 24;
nChannels = 1;
sig = audiorecorder(Fs, nBits, nChannels);
recordblocking(sig,5);
sigsound = getaudiodata(sig);
t= linspace(0, size(sigsound,1), size(sigsound,1))/Fs;
cd F:\1hp_laptop\c\my_files
filename = 'say.wav';
audiowrite(filename, sigsound, Fs)
答案 0 :(得分:2)
它正在被重写,因为您使用了常量文件名。您需要使.wav文件唯一,以确保它是新创建的。您可以将当前时间(以毫秒为单位)添加到文件名中,以使其唯一。
答案 1 :(得分:0)
正如Nilu所说,你的问题是你的脚本/函数filename
是不变的。
如上所述,一种选择是使用某种时间戳,例如:而不是
filename = 'say.wav';
你可以使用
filename = ['say_', datestr(now,'FFF'), '.wav'];
或者,根据你的音频文件长度(如果它足够长),你可以要求用户提供一个独特的文件名,通过将所有代码封装到一个函数中并要求一个字符串用作参数{ {1}}或使用Matlab的filename
:
input()