原始音频文件中的样本字节是啥意思?

Posted

技术标签:

【中文标题】原始音频文件中的样本字节是啥意思?【英文标题】:What do sample bytes in raw audio files mean?原始音频文件中的样本字节是什么意思? 【发布时间】:2014-05-13 14:22:53 【问题描述】:

是的,我知道 - 例如在16位有符号整数中,每2个字节代表一个“样本”,它是一个从-32768到32767的整数,但我不明白,也找不到信息,实际值和声音之间的映射是什么(声波参数,确切地说)。谁能给我解释一下或者给我指点什么地方?

【问题讨论】:

请参阅此处了解数字音频的基础知识:audacity.sourceforge.net/manual-1.2/tutorial_basics_1.html 【参考方案1】:

如果您将声波形象化,它是一条直线形式的曲线。众所周知,一条线由无限多的点组成。由于硬盘驱动器的空间有限,它不能存储无限点。它只能存储几个点。所以,我们能做些什么?我们只是取出这条“线”的几个点并将它们存储起来。这些点中的每一个都是一个样本。它是音频波在特定时间的位移。 所以如果你有这样的声音:

(来源:sourceforge.net)

计算机无法存储整个波形。它将取出该波的几个点并存储它们。而他为存储一秒钟取出多少点是由采样率来衡量的。采样率越高,声音的质量就越高。如果采样率是无限的,则质量几乎与原始波形一样好。但为什么几乎?那是因为计算机使用 8、16、24、32,... 任何位来存储一个样本。他用来存储一个样本的比特越多,质量就越好。因此,我们可以说,理论上,如果采样率是无限的并且用于存储一个样本的位数是无限的,那么声音的质量将与原始声音一样好。

【讨论】:

是的,我明白了,但假设我的程序读取的值为:10000 作为单个样本的值(假设它是第二个 16000 个样本中的第一个,带有 16khz/16 位音频文件)。就声波函数而言,这个精确值 10000 意味着什么?为什么我可以添加另一个样本,例如价值 5000 的样本来混合这两个样本? 好吧,我猜硬件或其驱动程序使用样本来计算扬声器的输出电压。就这样。但请记住,您可以添加任何样本(只要它们符合指定的格式),但如果您只添加随机值,您会得到一个糟糕的声音......

以上是关于原始音频文件中的样本字节是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

FFT的大小实际上是啥意思

将原始音频字节记录到 Android 中的局部变量

将音频样本的字节数组更改为频率

如何在 C# 中使用原始音频样本创建波形流?

使用 java [重复] 确定给定一个字节 [] 记录的音频数据的频率

从线性 PCM 中提取音频通道