音频评价指标

第一个是主观评价指标,后面几个是客观评价指标

1.MOS (Mean Opinion Score, 平均意见得分)

  • 评价方法

MOS 是一种主观评估方法,通过让一组听众对合成的语音质量进行评分来衡量语音的自然度或质量。评分通常在 1 到 5 的范围内,1 表示“非常差”,5 表示“非常好”。

使用方法: 听众会根据语音的自然度、清晰度、情感表达等进行评分,最终通过平均听众的评分得到该语音的 MOS 值。

  • 置信区间

由于不同听众的评分可能会有所不同,因此 MOS 通常会附带一个置信区间,通过得分样本的均值,方差,分别临界值(通常为95%的临界值)来计算。

区间表示在 95% 的情况下,真实的平均分会落在该区间内。置信区间越小,说明听众的评分越一致;置信区间越大,说明评分差异较大。

  • CMOS

COMS (Comparative Mean Opinion Score)是直接让听众比较, 并给予评分,因此是一个相对评分, 如下:

-3: A 比 B 差很多
-2: A 比 B 差一些
-1: A 比 B 略差
0: A 和 B 差不多
+1: A 比 B 略好
+2: A 比 B 好一些
+3: A 比 B 好很多

CMOS 主要用于评估多个语音系统之间的相对质量,尤其是在研究不同模型、算法或数据集对语音合成效果的影响时。由于 CMOS 是一种比较性的评价方式,它可以更清楚地揭示不同系统之间的细微差异。

总结:
CMOS 是通过让听众比较两段语音,给出相对评分的主观评估方法。
它不同于 MOS 的绝对评分,更注重对比不同系统生成的语音质量。

2. MCD (Mel Cepstral Distortion, 梅尔倒谱差异)

MCD单位为dB, 计算公式如下:

MCD = 10 ln ⁡ ( 10 ) 2 ∑ t = 1 T ( c t ( ref ) − c t ( syn ) ) 2 \text{MCD} = \frac{10}{\ln(10)} \sqrt{2 \sum_{t=1}^{T} \left( c_t^{(\text{ref})} - c_t^{(\text{syn})} \right)^2} MCD=ln(10)102t=1T(ct(ref)ct(syn))2

c t ( ref ) c_t^{(\text{ref})} ct(ref) : 参考语音的第t个梅尔倒频系数

c t ( syn ) c_t^{(\text{syn})} ct(syn) : 合成语音的第t个梅尔倒频系数

T T T: 倒谱系数的维度, 一般为13 或 25, 维度越大细节特征越多

3. TTS 字词错误率

  • 编辑距离

编辑距离指通过插入、删除或替换字符来使生成文本与参考文本匹配所需要的最小操作数(通常使用 Levenshtein 距离计算

  • 词错误率(Word Error Rate, WER)

    WER = 编辑距离 / 单词总数

  • 字符错误率(Character Error Rate, CER)

    CER = 编辑距离 / 字符数

4.STOI

Short-Time Objective Intelligibility (STOI) 是一种用于评估语音信号可懂度的客观评价指标,适用于语音增强、去噪等任务。

STOI 的设计初衷是模拟人类在听觉上对语音可懂度的感知,通常用于对比增强语音和原始干净语音之间的差异。

STOI 通过计算输入的干净语音和失真语音(例如经过噪声、增强或变换后的语音信号)之间的相似度来评估语音信号的可懂度。它的主要流程可以归纳如下:

  • 将语音信号划分为短时帧(通常是 20ms 长)。
  • 对每个帧进行短时傅里叶变换 (STFT) 并提取出频谱。
  • 通过频带加权,对干净语音和失真语音之间的差异进行分析。
  • 计算每个帧的对数相似度,得出 STOI 分数。

STOI 的输出是一个介于 0 到 1 之间的分数,数值越高表示语音可懂度越好,越接近 1 表示信号与参考信号的相似性越高。

import numpy as np from scipy.io import wavfile from pystoi import stoi # 加载干净语音和失真语音 
fs_clean, clean_speech = wavfile.read("clean_speech.wav") 
fs_noisy, noisy_speech = wavfile.read("noisy_speech.wav") # 确保采样率相同 
assert fs_clean == fs_noisy, "Sampling rates do not match!" # 计算 STOI 分数 
stoi_score = stoi(clean_speech, noisy_speech, fs_clean, extended=False) print(f'STOI Score: {stoi_score:.4f}')

注:extended=True:是使用扩展的 STOI 计算方法(ESTOI),一种更加准确的STOI评估方法。

5.PESQ

Perceptual Evaluation of Speech Quality (PESQ) 是一种用于客观评估语音质量的标准化指标。它最初由 ITU-T(国际电信联盟-电信标准化部门)在 P.862 建议书中提出,用于评估通信系统中的语音质量。PESQ 被广泛用于语音编解码器、语音增强、去噪等语音处理技术的质量评估。

PESQ 是一种基于感知模型的质量评估算法,它通过模拟人耳对语音失真的感知能力来评估语音的质量。PESQ将参考语音信号(干净的原始语音)与失真语音信号(例如经过编码、传输、增强或去噪后的语音)进行对比,生成一个质量分数,通常在 -0.5 到 4.5 之间, 值越高越接近无损。

步骤:

  • 将语音信号划分为短时帧。
  • 模拟人类听觉系统处理语音信号的方式,提取出感知特征。
  • 通过计算参考信号和失真信号之间的感知差异,给出一个量化的 PESQ 分数。
import numpy as np 
from scipy.io import wavfile 
from pesq import pesq 
from pesq import PesqError # 加载干净语音和失真语音 
fs_clean, clean_speech = wavfile.read("clean_speech.wav") 
fs_noisy, noisy_speech = wavfile.read("noisy_speech.wav") # PESQ 算法支持的采样率为 8000 或 16000 Hz,确保采样率一致 
if fs_clean != fs_noisy: raise ValueError("Sampling rates do not match!") 
if fs_clean not in [8000, 16000]: raise ValueError("PESQ only supports 8000 Hz or 16000 Hz") # 计算 PESQ 分数 try: pesq_score = pesq(fs_clean, clean_speech, noisy_speech, 'wb') # 'wb' for wide-band (16000 Hz), 'nb' for narrow-band (8000 Hz) print(f'PESQ Score: {pesq_score:.4f}') 
except PesqError as e: print(f'Error calculating PESQ: {e}')
  • 读取语音信号: 使用 scipy.io.wavfile.read 读取干净的语音文件和失真的语音文件。

  • 确保采样率一致: PESQ 只支持两种采样率:8000 Hz (窄带) 和 16000 Hz (宽带),因此需要确保两种语音信号的采样率相同并且符合 PESQ 支持的采样率。

  • 计算 PESQ: 调用 pesq 函数传入采样率、干净语音和失真语音,并选择 wb 或 nb 模式来指示是宽带(16kHz)还是窄带(8kHz)计算。返回的 pesq_score 是 PESQ 分数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业智造加速升级|2027年前,200万套工业软件+80万台操作系统大换血!

据悉,9月20日,工业和信息化部办公厅印发《工业重点行业领域设备更新和技术改造指南的通知》。 其中指出,到 2027 年,在重点行业和领域,基础软件、工业操作系统和工业软件实现升级改造,完成约 200 万套工业软…

Css_动态渐变圆圈旋转效果

1、效果图 2、实现代码 <template><div class"box"><div class"line"></div><div class"lineNew"></div></div> </template><script lang"ts" setup></script><styl…

【图像匹配】基于Harris算法的图像匹配,matlab实现

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于Harris算法的图像匹配&#xff0c;用matlab实现。 一、案例背景和算法介绍 …

el-table表格的展开行,初始化的时候展开哪一行+设置点击行可展开功能

效果&#xff1a; 表格展开行官网使用&#xff1a; 通过设置 type"expand" 和 Scoped slot 可以开启展开行功能&#xff0c;el-table-column 的模板会被渲染成为展开行的内容&#xff0c;展开行可访问的属性与使用自定义列模板时的 Scoped slot 相同。 但是这种方法…

MySQL篇(存储引擎 - InnoDB存储引擎架构)(持续更新迭代)

目录 一、逻辑存储结构 1. 表空间 2. 段 3. 区 4. 页 5. 行 二、架构 1. 简介 2. 内存结构&#xff08;四部分&#xff09; Buffer Pool Change Buffer Adaptive Hash Index Log Buffer 3. 磁盘结构&#xff08;七部分&#xff09; System Tablespace File-Per-…

Unity 设计模式 之 结构型模式 -【装饰者模式】【外观模式】【享元模式】【代理模式】

Unity 设计模式 之 结构型模式 -【装饰者模式】【外观模式】【享元模式】【代理模式】 目录 Unity 设计模式 之 结构型模式 -【装饰者模式】【外观模式】【享元模式】【代理模式】 一、简单介绍 二、装饰者模式&#xff08;Decorator Pattern&#xff09; 1、什么时候使用装…

css文本修饰

一、文本修饰 属性描述使用color设置字体颜色color: #ff1237text-align设置文本水平对齐text-align: center 水平居中text-align: right 右对齐text-align: justify两端对齐vertical-align设置本文垂直对齐vertical-align: top 按当前行最高元素顶部对齐vertical-align: middl…

SQL编程题复习(24/9/20)

练习题 x25 10-120 统计每个班级期末成绩的最高分&#xff08;Max&#xff09;&#xff0c;显示班级名称、期末最高成绩10-121 显示没有班导师的班级名称、院系名称10-122 将电子信息1班(班级编号&#xff1a;08)的班主任编号改为李丽清老师的编号&#xff08;PTA题目表述错误&…

JFinal整合Websocket

学习笔记&#xff0c;供大家参考 总结的不错的话&#xff0c;记得点赞收藏关注哦&#xff01;导入JAR包 javax.websocket-api <dependency><groupId>javax.websocket</groupId><artifactId>javax.websocket-api</artifactId><version>1.1&…

vagrant+virtualbox+ubuntu22.04无法上网问题

一、过程 vagrantfile配置私有网络 config.vm.network "private_network", ip: "192.168.56.10"启动虚拟机&#xff0c;可以ping通百度的实际IP&#xff0c;ping不通域名修改/etc/netplan/50-vagrant.yaml&#xff0c;配置DNS network:renderer: Networ…

Linux-mysql5.7-mysql8.0安装包下载及安装教程,二合一

一、安装包下载 1、手动下载 MySQL :: Download MySQL Community Server 2、wegt下载 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 登录自己的liunx &#xff0c;复制上面的命令下载。 二、手动安装 1、上传压缩包到…

BSN六周年:迈向下一代互联网

当前&#xff0c;分布式技术作为现代计算机科学和信息技术的重要组成部分&#xff0c;在云计算、区块链等技术的推动下&#xff0c;正以多样化的形式蓬勃发展。 ​而区块链作为一种特殊的分布式系统&#xff0c;近年来也在各个领域得到了广泛关注。通过在区块链上运行智能合约…

JSBSim中的运动方程模型(更新ing........

JSBSim中的运动方程模型 飞行动力学模型的核心目标是模拟并跟踪飞行器在地球&#xff08;或其他行星&#xff09;表面上方的飞行轨迹&#xff0c;这需要考虑作用于飞行器的力和力矩。我们已经了解了飞行器的特性&#xff0c;比如它的物理参数和气动特性&#xff0c;以及行星的…

【网络】高级IO——LT和ET

在上一篇的学习中&#xff0c;我们已经简单的使用了epoll的三个接口&#xff0c;但是仅仅了解那些东西是完全不够的&#xff01;&#xff01;接下来我们将更深入的学习epoll 1.epoll的两种工作模式——LT和ET 下面来举一个例子帮助大家理解ET和LT模式的区别&#xff08;送快递…

Elasticsearch集群的运维与管理

【1】安装启动ES 集群 &#xff08;1.1&#xff09;集群架构规划 OS  ES versionIpnode.nameRolecluster.namees basedirCentOS Linux release 7.8.2003 (Core)elasticsearch-7.14.1 192.168.175.132:9200 cluster&#xff1a;192.168.175.132:9301 node_1 node.mastertrue …

Conda新建python虚拟环境问题

Conda新建python虚拟环境问题&#xff1a; 【问题1】 conda create --name yolov8 python3.10 -y Retrieving notices: …working… done Channels: defaults Platform: win-64 Collecting package metadata (repodata.json): failed UnavailableInvalidChannel: HTTP 404 NO…

【2024】MySQL账户管理

当前MySQL版本为&#xff1a; mysql> select version(); ----------- | version() | ----------- | 8.4.2 | ----------- 1 row in set (0.01 sec)目录 创建普通用户为用户授权查看用户权限修改用户权限修改用户密码删除用户 创建普通用户 使用CREATE USER语句创建用户…

【Python报错已解决】To update, run: python.exe -m pip install --upgrade pip

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Unity之FPS

目录 &#x1f3ae;MouseLook摄像机旋转脚本 &#x1f3ae;PickUpItem武器拾取脚本 &#x1f3ae;PlayerController玩家控制器 &#x1f3ae;Inventory武器库 &#x1f3ae;Weapon武器抽象类 &#x1f3ae;Weapon_AutomaticGun武器脚本 其实这个教程很早就收藏了就是被20…

HarmonyOS Next开发----使用XComponent自定义绘制

XComponent组件作为一种绘制组件&#xff0c;通常用于满足用户复杂的自定义绘制需求&#xff0c;其主要有两种类型"surface和component。对于surface类型可以将相关数据传入XComponent单独拥有的NativeWindow来渲染画面。 由于上层UI是采用arkTS开发&#xff0c;那么想要…