把模拟信号转变成 数字信号,前者是连续的,后者离散的
。因此有 DAC 和 ADC。
需要关注的三个指标,这三个指标决定音频的质量
比特率:表示经过编码(压缩)后的音频数据每秒钟
需要用多少个比特来表示,单位常为 kbps。 这个数字越大音频质量越好,但是数据文件就越大。
响度和强度:声音的主观属性响度表示的是一个声音听来有多响的程度。响度主要随声音的强度而变化,但也受频率的影响。总的说,中频纯音听来比低频和高频纯音响一些。这个就是振幅
。计算方式 20lg(amp1/基准振幅),基准振幅就是在声音最大的时候采用的振幅。
采样和采样率:采样是把连续的时间信号,变成离散的数字信号。采样率是指每秒钟采集多少个样本
。采样率越高其质量越好,一般在底层是 48k 采样率,宽带电话是 16k,窄带是 8k。
Nyquist 采样定律:采样率大于或等于连续信号最高频率分量的 2 倍时,采样信号可以用来完美重构原始连续信号。
这句话的意思大概就是, 比如采样率是 16Khz, 那么频率只能达到 8kHz;如果是 48kHz 的采样率,那么频率可以达到 24kHz.
开源软件 audacity
的插件就是 ny 结尾的,里面用 lisp 语言写的,用于计算一些 rms、THD 等
模拟信号数字化的取样技术
,将模拟语音信号变换为数字信号的编码方式,把时间上连续的信号变成时间上离散的信号
。把连续的编码成离散的,这里有损失,但是人耳听不出来。与相等的PCM比较,这种编码只需要25%的比特数
,比特率小,文件就小。每一帧的图像
表达信息;视频包含的音频可提供大量信息;视频通过图像的运动、场景的变换提供信息;RGB 颜色空间
YUV 颜色空间(Y=明亮度, UV=就是色度,包含了色调和饱和度)
没有UV信息一样可以显示完整的图像
,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。并且,YUV 不像 RGB 那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽
。
因此 YUV编码更常用。
RGB 和 YUV 之间可以转换。
视频编码的最主要目的是数据压缩
,在传输过程中花费太多的带宽。
数据有冗余的,所以可以压缩
封装格式(也叫容器),就是将已经编码压缩好的
视频轨
和音频轨
按照一定的格式放到一个文件中
,也就是说仅仅是一个外壳,或者大家把它当成一个放视频轨和音频轨的文件夹也可以。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。 下面是几种常用的 视频文件后缀类型 与其相对应的 封装格式。
视频编码格式, 比较常见 H264
。音频编码常见的 aac
,和 mp3
。 AAC 压缩比高,音质更好。
接近的预测模式
,得到预测图片 A, A 与原图对比相减,得到 残差值。
然后把残差和预测模式保存起来就可以恢复了。验证数据用的是
根据提供给算法的信息,语音质量测试算法可分为两大类
完全引用"(FR)
算法可以访问并使用原始参考信号进行比较(即差异分析)。它可以比较参考信号的每个样本(说话端)与降级信号的每个对应样本(侦听器侧)。FR 测量可提供最高的精度和可重复性
,但只能应用于实时网络中的专用测试(例如移动网络基准的驱动测试工具)
"无参考"(NR)
算法仅使用降级信号进行质量评估,并且没有原始参考信号的信息。NR 算法只是低准确性估计值
,因为源引用的原发语音特征(例如男性或女性说话者、背景噪音、非语音)完全未知。NR 算法的常见变体甚至不分析解码的音频信号
,而是对 IP 数据包级别上的数字位流进行分析。因此,测量仅限于传输流分析。
POLQA是最新的,其他都是小弟。
Perceptual Evaluation of Speech Quality
PESQ 结合了 PSQM 和 PAMS 的优势,针对 VoIP 和混合的端到端应用作了改进,并针对 MOS 和 MOS-LQ 计算方法做了修改。
也是全参考测试算法
## first, install soundfile and pypesq
import soundfile as sf
from pypesq import pesq
ref, sr = sf.read("sine.wav")
deg, sr = sf.read("sine1.wav")
score = pesq(ref, deg, sr)
print(111,score)
得到的 score 分数就是MOS 的值
输出结果
4.5
计算方法
python
# here is the implementation
https://chromium.googlesource.com/external/webrtc/+/3c1e558449309be965815e1bf/webrtc/audio/test/low_bandwidth_audio_test.py
并扩展到处理更高带宽的音频信号。进一步的改进针对时间调用信号的处理,具有许多延迟变化。
全参考算法,在对参考和测试信号的相应摘录进行时间对齐后,对语音信号进行采样分析 ,对于端到端的质量评估。
前面提到的都是全参考的, 无参考, 马上就来.看下面这个就是实际的应用.
python -m frechet_audio_distance.compute_fad --background_stats stats/background_stats --test_stats stats/test1_stats
python -m frechet_audio_distance.compute_fad --background_stats stats/background_stats --test_stats stats/test2_stats
PEVQ 还通过各种 KPI(包括 PSNR、失真指示器和唇部同步延迟)来量化视频信号中的异常。
psnr 是 “Peak Signal to Noise Ratio” 的缩写,即峰值信噪比,是一种评价图像的客观标准,它具有局限性,一般是用于最大值信号和背景噪音之间的一个工程项目。
PSNR 是最普遍,最广泛使用的评鉴画质的客观量测法,不过许多实验结果都显示,PSNR的分数无法和人眼看到的视觉品质完全一致
,有可能 PSNR 较高者看起来反而比 PSNR 较低者差。这是因为人眼的视觉对于误差的敏感度并不是绝对的,其感知结果会受到许多因素的影响而产生变化
SSIM(structural similarity index),结构相似性,是一种衡量两幅图像相似度的指标。该指标首先由德州大学奥斯丁分校的图像和视频工程实验室 (Laboratory for Image and Video Engineering) 提出。SSIM 使用的两张图像中,一张为未经压缩的无失真图像,另一张为失真后的图像。
# 应用
webrtc
WebRTC 是一个免费的开放软件项目,可通过简单的 API 为浏览器和移动应用程序提供实时通信(RTC)功能。 WebRTC 组件已经过优化,可以最好地满足此目的。
mic 主要是针对 audio
camara 分 2 部分, 一个 WxH 分辨率 (width x height) 和支持的分辨率
报告编码时间和平均帧速率
第二部分
网络
验证它可以使用给定协议与转服务器进行通信
验证它至少可以收集一个 IPv6 候选者
连接性 (主要 TURN server 连接的验证)
吞吐量
数据吞吐量 建立环回调用并测试链路上的数据通道吞吐量
视频带宽
建立环回呼叫并测试链路上的视频性能
在媒体通道上测量 rtt(round-trip time)
.
测量带宽估计性能(增加时间、最大值、平均值
)