音频基础知识

编码后的音频,解析->解码->渲染

数据采集(采样率:G711A(8-bit A-Law Compressed)默认8k)PCM数据—>编码—>解码(.wav文件)

1 采样率

每秒钟取得声音样本的次数。(8K,16K)(目前G711,G726只支持8K,G722只支持16K)

采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。由于人耳的分辨率很有限,太高的频率并不能分辨出来。每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示,采样率是指将模拟信号转换成数字信号时的采样频率,也就是单位时间内采样多少点,采样频率越高声音的还原就越真实越自然。

2 比特率(码率)  (G711只支持64K,G722只支持16K,G726只支持16K)

每秒传送的比特数(bit per second)。(比特率表示经过编码(压缩)后的音视频数据每秒钟需要用多少个比特来表示)

比特率越高;音频、视频的质量就越好;但编码后的文件就越大

通道:单双通道  左右耳

3 采样精度(样位)   (目前编码只支持单通道,16位)

8位,16位还是32位

4 MP3音频压缩

音频压缩包含编码和解码两个部分(先将原始声音数据分成固定的分块,然后作顺向MDCT变换,MDCT本身并不进行数据压缩,只是将一组时域数据转换成频域数据,以得知时域变化情况,顺向MDCT将每块的值转换为512个MDCT系数。量化使数据得到压缩,在对量化后的变换样值进行比特分配时要考虑使整个量化块最小,这就成为有损压缩了)

编码:是将【WAV文件中的数据】转换成【高压缩率的位流形式】。(通过混合滤波器组将原始声音变换到频率域,利用心理声学模型,估算刚好能被察觉到的噪声水平,再经过量化,转换成Huffman编码,形成MP3位流)。编码实质是减少音频中的冗余

解码:是【接受位流】并将其重建到【WAV文件中】。(解码器要简单得多,它的任务是从编码后的谱线成分中,经过反量化和逆变换,提取出声音信号)

MP3: 是一种高效的计算机音频编码方案,它以较大的压缩比将音频文件转换成较小的扩展名为.mp3的文件,基本保持源文件的音质,MP3是ISO/MPEG标准的一部分。

5 PCM数据

  1. pcm是裸数据,不带有任何编码格式的
  2. pcm数据既是编码前的数据格式,也是解码后的数据格式

一帧PCM是由2048次采样组成。未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后,

{AAC和ARM都是对PCM进行编码,你可以理解为压缩,因为PCM是最原始采集到的数字信号,是无损的,体积很大不利于网络传输。G711也是对PCM的编码,你可以理解为和AAC一样}

6 每帧播放时间大小:

音频每帧播的秒数=每帧大小(样本个数)*1000/(采样率*位数/8*通道)

例如:

audio media Info: nSise:2048,nSampleRate:48K,channel:1,bitsPerSample:16,码率:128K

2048*1000/(48000*2)=21ms

7 编码后的音频大小

实际码率=采样率*位数=48K*16=768K(8000个采样点) 。码率单位:bps(bit/s)

编码压缩率是=768K/128K=6(实际的真实压缩比算不出来,是变化的)

一帧AAC编码数据大小:2048/6=341(大约是768)

8 音量

对一帧数据,计算所有采样点的平方和,然后求平均,再取对数,就是该帧语音信号的能量,表示的就是音量的大小。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供相关的知识讲解和Python实现电脑录音的方法。 首先,我们需要了解一些音频基础知识音频是一种模拟信号,它可以被数字化为一系列数字信号,这些数字信号称为采样点。采样率是指每秒钟采集的采样点数,它决定了音频的质量。常用的采样率有8kHz、16kHz、44.1kHz和48kHz等。 Python中可以使用PyAudio库来录制音频。PyAudio是Python语言的一种音频处理库,可以用于录音、播放音频等操作。下面是一个简单的录制音频的示例代码: ```python import pyaudio import wave # 设置录音参数 CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 16000 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" # 创建PyAudio对象 p = pyaudio.PyAudio() # 打开音频流 stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) print("* recording") # 录制音频 frames = [] for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) frames.append(data) print("* done recording") # 关闭音频流 stream.stop_stream() stream.close() p.terminate() # 保存音频文件 wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() ``` 该代码使用PyAudio打开了一个音频流,并将音频数据读取到一个列表中。在录制完成后,将音频数据保存到一个WAV文件中。 需要注意的是,该代码只是一个简单的示例,实际应用中需要根据需要进行相关参数的设置,如采样率、录制时间等。 希望这些信息能够帮助到您。如果您还有其他问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值