你可以用这样的参数来帮助我生成音频信号:
我需要在没有任何标题的情况下将样本写入文件,使用符号(LSB,MSB)进行小端表示。例如。如果样本的值为32767(在此表示中为最大值),则它将保存为0xFF7F。
此信号应包含几个音调。我有这样的代码用于生成音调:
frequency = 2000;
duration = 2;
amplitude = 1;
sampleFreq = 8000;
t = linspace( 0, duration, duration * sampleFreq );
s = amplitude * sin( 2 * pi * frequency * t ) + amplitude * sin( 2 * pi * frequency/2 * t ) + amplitude * sin( 2 * pi * frequency*2 * t );
它创建了8000 Hz采样率的矢量(单声道)。但我不知道如何使用LSB,MSB约定以16位写入样本。
问候。
答案 0 :(得分:1)
您可以使用wavewrite或audiowrite。
wavwrite(s,filename)
将存储在变量s
中的数据写入名为filename
的WAVE文件中。 filename
输入是用单引号括起来的字符串。数据的采样率为8000 Hz,假定为16位
如果存在字节序问题,您可以使用swapbytes函数将big-endian输出格式化为little-endian(反之亦然),即s = swapbytes(s)
您可以使用following SO answer
删除标题