0

你能帮我用这样的参数生成音频信号吗:

  • 采样率 = 8000 赫兹,
  • 单核细胞增多症,
  • 每个样本 16 位。

我需要在没有任何标题的情况下以带符号(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 位编写样本。

问候。

4

1 回答 1

1

您可以使用wavewriteaudiowritewavwrite(s,filename)将存储在变量s中的数据写入名为filename. filename输入是用单引号括起来的字符串。数据的采样率为 8000 Hz,假定为 16 位。如果存在字节序问题,您可以使用swapbytes
函数 将 big-endian 输出格式化为 little-endian(反之亦然),即s = swapbytes(s)

您可以使用以下 SO 答案删除标题

于 2013-01-22T11:06:23.297 回答