市中心老小区有位保安老周,干了二十年,练就一项绝活:听声辨人。新住户搬来,他会认真听对方说三句话,默默记下“王阿姨声音偏高带脆、三楼大学生语速快有口音、张叔嗓门大又低沉”。从此以后,不管谁深夜按门铃,老周只听一声“是我,开门”,就能判断真假。偶尔有人捏着嗓子冒充邻居,他也能当场识破。可老周也有翻车的时候:王阿姨重感冒时声音沙哑,他差点把真住户拦在外面;王阿姨的妹妹来串门,声音天生相近,他差点放进一个“假住户”。 这个故事里,老周干的正是“说话人验证”的活儿——不是听懂你说了什么,而是判断你是不是你。AI 要做的,就是把老周的耳朵、记忆和判断力,变成一套能量化、可复现的系统:先给每个人建声音档案(声纹注册),再画出声音的独特印记(特征提取),然后用尺子量一量“像不像”(打分),最后在心头划一条红线决定放行还是拒绝(阈值决策),并用一套考卷检验老周的水平(EER 评估)。本文就用这个保安故事,带你从零看懂说话人验证的完整技术原理。
掌握说话人验证技术,你就能为声纹门禁、金融电话核身、智能音箱个性化等产品打造“听声辨人”的身份认证引擎——这是语音时代语音算法工程师最核心的基本功之一。
可视化演示
展示说话人验证系统的核心流程:声纹注册、特征提取、余弦相似度打分和PLDA判决,直观理解EER阈值决策原理。
本节配有交互动效(进入视口后自动加载,约 3KB)。
注册:声纹嵌入提取 录入语音经MFCC特征提取后生成声纹嵌入向量 嵌入向量存入声纹库作为说话人身份模板 x_enroll = f_θ(audio_enroll) 注册完成后可用于后续验证比对
声纹注册流程
老周上岗第一天,保安队长组织全体住户来门卫室“报到”。王阿姨、三楼的大学生、五楼的张叔……每个人都对着对讲机说三遍“你好,我是 XXX”。老周竖着耳朵听,在脑子里悄悄记账:王阿姨声音偏高带脆,大学生语速快有口音,张叔嗓门大又低沉。这个“报到建档”的环节,对应的就是说话人验证里的“声纹注册”。
在 AI 系统里,注册同样是一场正式的“报到”。用户需要在安静环境里念一段指定文本,或者自由说几句话,系统录下 3~5 条语音。随后语音信号会经过预处理——去掉静音、压低噪声、统一音量,接着提取特征,最后把多条语音的特征汇总成一个“说话人模型”,存进声纹数据库。以后每一次验证,都拿新声音和这个模型比对。
注册质量直接决定后续验证的准确率。如果注册时背景嘈杂、人离麦克风太远、语速忽快忽慢,建出来的档案就容易失真。工程上通常要求每段语音 3~10 秒,信噪比足够高,并采用语音活性检测(VAD)切除静音片段。假设每秒提取 100 帧特征,每帧是 40 维向量,一条 5 秒的语音就变成一个 500×40 的特征矩阵。建模时最简单也最稳健的做法,是把所有帧向量求平均:
老周的经验里“多听几遍就稳,只听一句容易被感冒骗过”,系统取平均正是把“多听几遍”变成了数学操作。档案建好了,老周心里有了底,但下一个问题立刻冒出来:怎么描述“这个声音的特征”?这正是下一节要解决的。
- 特征向量 xi第 i 帧语音被提取出的特征向量,是“声音素描”的一笔,维度通常是 13 或 40。
- 求和累加把 N 帧向量逐位相加,相当于把保安对住户 N 次说话的印象叠加成一份总印象。
- 平均系数归一除以 N 得到均值,抵消呼吸、情绪带来的随机抖动,只留下稳定的音色底色。
特征提取原理
老周凭什么记住王阿姨的声音?靠的是“音色印记”:音调高低、共鸣位置、咬字习惯。但保安不可能把录音原封不动存在脑子里——他要的是摘要。AI 也一样,不能拿原始录音直接比对,那样数据量太大又容易受噪声干扰,必须先给声音画一张“素描”。
这张素描就是声学特征,最经典的是 MFCC(梅尔频率倒谱系数)。它模拟人耳:人耳对低频分辨精细、对高频分辨粗糙,于是先把频谱映射到梅尔刻度,再取对数、做倒谱变换,最后每帧语音变成一组 13~40 维的向量。这些向量就像声音的“指纹笔迹”,每个人因为声带、口腔形状不同,写出来的笔迹也各不相同。
MFCC 的计算分四步:分帧加窗、FFT 频谱、梅尔滤波器组、取对数后做离散余弦变换。其中梅尔刻度的核心,是一条把物理频率“掰弯”的换算式:
老周记的从来不是王阿姨嘴里说出的每一个字,而是她说话的“腔调底色”。MFCC 也一样——丢掉“说了什么”的文字信息,只保留“怎么说的”音色信息,这正是说话人验证与语音识别最根本的分工。素描画好了,接下来就轮到老周心里那把“像不像的尺子”登场了。
- 物理频率 f声音每秒振动的次数,单位是 Hz,是麦克风捕捉到的真实信号属性。
- 内层加一再取对数把高频区间压缩、低频区间拉伸,模拟人耳对声音由细到粗的非均匀分辨力。
- 外乘系数 2595把结果校准成“梅尔”单位,让 1000Hz 附近的刻度与人耳音高感知对齐,数值好读好用。
余弦相似度打分
某天半夜,一个醉汉冒充住户按门铃,捏着嗓子说“我是张叔”。老周一听,声音虽然都低沉,但腔调对不上号——他心里的尺子落了地:三分像,七分不像,不通过。这把“像不像的尺子”,在系统里就是余弦相似度打分。
注册时把所有人的帧特征平均成一个向量,作为“张叔声音档案”;验证时测试语音也提取特征并聚合成一个测试向量。两个向量在高维空间里各指向一个方向:方向越接近,说明音色越像;方向差得越远,说明大概率不是同一个人。余弦相似度量化的就是这两个方向之间的夹角大小:
老周心里那把尺子其实也有刻度:夹角小于某个“感觉线”就相信,大于就怀疑。余弦打分在人少、录音条件可控的轻量场景非常管用,堪称性价比之王。但真实世界更刁钻:双胞胎声音几乎一样、感冒后声音大变,光看夹角容易翻车。这时就得请出PLDA这位“统计派专家”。
- 分子内积两个向量逐位相乘再相加,同方向的维度贡献正分,反方向贡献负分,衡量两段声音“步伐是否一致”。
- 分母两个模长分别开根号算出向量长度,用它们做归一化,音量大的声音不能“以大欺小”。
- 夹角余弦值取值范围在 -1 到 1,越接近 1 表示夹角越小、音色方向越一致,就越可能是同一个人。
PLDA模型打分
老周发现光靠“像不像”会翻车。王阿姨重感冒时声音沙哑,余弦打分偏低,真住户被拦在门外;王阿姨的妹妹来串门,天生声音相近,余弦打分超高,差点被放进来。老周决心升级:他不只看“现在像不像”,还要分析“现在的差异是本人状态变化,还是换了另一个人”。
这种升级版分析就是 PLDA(概率线性判别分析)。它的核心思想是:一段声音 x 由三部分组成——全局均值 μ、说话人因子 Φy(这个人独特的音色)、信道因子 ε(麦克风、环境、感冒状态等干扰)。系统在大规模人群数据上训练出 Φ 和 ε 的统计规律后,就能回答一个概率问题:给定注册语音和测试语音,它们“来自同一人”和“来自不同人”哪个假设更可能?答案用对数似然比打分:
余弦打分只算“方向夹角”,PLDA 还要扣除“共同的背景干扰”,所以跨手机、跨环境、跨时间的场景更稳。当然,PLDA 需要海量语音训练统计模型,门槛也更高。但无论用哪种打分,最终都逃不过一个动作——按下“放行/拒绝”的按钮,这就是决策环节。
- 同人假设分子把注册向量 x1 和测试向量 x2 代入“来自同一人”的概率模型,计算两者同时出现的可能性。
- 异人假设分母换用“来自不同人”的模型再算一次概率,这个值通常更小——陌生人撞音的概率远低于本人变声。
- 对数比值判决同人概率除以异人概率再取对数,大于 0 偏向“本人”,越大越可信。
验证决策流程
老周手里有条看不见的“红线”:声音相似度超过红线就开门,低于红线就报警。红线定得高,陌生人混不进来,但住户稍微感冒就被拦;红线定得低,住户方便了,冒名者也更容易混进来。这条红线的位置,就是阈值 τ 的选择。
系统里,注册和验证流程完全分开:注册时建模入库,验证时提取被测语音特征,计算与目标模型的相似度或似然比得分,最后与阈值比较,输出“通过”或“拒绝”。阈值不是算法自动定的,而是产品和算法工程师根据业务风险一起定的——门禁系统宁可误拦也不放错,阈值就调高;打车软件要流程顺畅,阈值就适当调低。理论上,决策就是一次分段判断:
老周心头那根红线,说到底就是风险偏好的体现:安全感换便利,还是便利换安全感。但老周也想知道,这套红线和尺子到底靠不靠谱?这就需要一个客观考卷——下一节的 EER,就是那张标准答案。
- 判据 s上一步算出的相似度或似然比,是“像本人”的证据强度,s 越大越像本人。
- 红线 τ阈值,由业务风险标定,每挪动一丁点都会牵动误放与误拦的比例。
- 分段输出s 达到 τ 就放行,否则拒绝,系统最终只输出“开门”或“报警”两个动作。
EER评估指标
年底考核,队长给老周出了两套题:一是把冒名者当住户放进来,记一次“误放”;二是把真住户拦在门外,记一次“误拦”。队长发现,老周把红线抬高,误放少了但误拦多了;把红线降低,误拦少了但误放又回来了。这个此消彼长的关系,在系统里叫 FAR 与 FRR。
FAR(误识率)衡量安全性:未授权的人被放行的比例,冒名者越容易通过它就越高。FRR(误拒率)衡量便利性:真正的用户被拒绝的比例,门槛越高它就越大。二者像跷跷板:调高阈值,FAR 下降、FRR 上升;调低阈值正好反过来。理想情况下,我们希望找到那个“两边一样高”的平衡点:
队长把 EER 写进老周的考核表:EER 5% 意味着红线设在平衡点时,误放和误拦各占 5%。当然,考试只是模拟,真实世界还有“有人拿录音机放王阿姨声音骗开门”怎么办?这就是工程应用要操心的事了。
- FAR 与 FRR 两翼FAR 是误放冒名者的比例,FRR 是误拦真住户的比例,它们随阈值反向而动。
- 特殊阈值 τ\*阈值扫描中找到两者相等(或最接近)的这一点,它是系统“公平考场”的平衡原点。
- 交点处取值把这一点上共同的错误率记为 EER,越低说明系统“听声辨人”的整体本领越强。
工程应用实践
学会整套流程的老周,被调去管理一栋高档写字楼。这里的门禁系统集合了他所有本事:新员工入职要先登记(注册),进门要报名字验声(打分决策),重要机房还加了活体检测——防止有人拿录音、语音合成来冒充。老周感叹:光会听声辨人不够,还得防“录音重放”。
说话人验证的落地场景远不止门禁。银行呼叫中心用它做“电话核身”:客户拨通电话,系统用 10 秒对话确认身份,替代传统密码问题;智能音箱用它区分家庭成员,每个人都拥有自己的播放列表和隐私权限;手机 App 用声纹作为“一键登录”的辅助因子。这些场景背后是统一的设计模式:注册、特征提取、打分、阈值判断,四步一个不少。工程上考核安全性,最常引用的就是误识率:
实际部署还要注意:语音太短(少于 3 秒)EER 会明显升高;年龄增长、感冒生病会让声纹漂移,需要定期重新注册;多麦克风阵列要配合信号增强;对抗录音重放必须叠加活体检测。老周这时才明白,自己从“听声认人的保安”,升级成了“声纹系统的运营专家”——注册建档案、特征画素描、打分看夹角、PLDA 消干扰、阈值定红线、EER 出成绩、工程保落地,这正是说话人验证的完整技术拼图。
- 分子统计冒名者尝试进入系统却被放行的次数,相当于保安放错了人。
- 分母统计冒名者所有尝试次数,包括被拦下的和混进去的,构成安全考核的总体样本。
- 百分比换算乘以 100% 变成直观的百分数,方便不同系统之间横向比较安全水平。
AI 应用场景
写字楼声纹门禁系统
阶段:声纹注册与验证决策
解决的问题:传统门禁卡易丢失、密码易被偷看,冒用工牌防不胜防。声纹门禁在员工入职时采集 3 条语音建档,进出时用户说一句短口令,系统提取特征后与档案做余弦或 PLDA 打分,并叠加活体检测拦截录音重放。阈值调优时用 EER 辅助选点,安保区域取低 FAR 的高安全配置。
具体案例:某总部大楼部署声纹门禁后,员工平均开门时间从刷卡 3 秒降到 1.5 秒,冒用工牌事件归零;结合“红外感知口型+随机口令”的双重活体检测,手机录音攻击被全部拦截。
银行呼叫中心电话核身
阶段:特征提取与 PLDA 模型打分
解决的问题:传统电话客服靠“身份证号+密码”验证身份,信息一旦泄露,冒用风险极高。声纹核身把每通电话的语音转成特征向量,与客户预留声纹做 PLDA 打分,跨手机、座机、免提等信道仍保持鲁棒,把“你知道什么”升级成“你是谁”。
具体案例:某股份制银行在信用卡激活业务嵌入声纹核身,客户说出“激活信用卡”即完成比对,冒名激活率下降 90%,客服平均通话时长减少 40 秒,客户满意度明显提升。
智能音箱多用户识别
阶段:特征提取与余弦相似度打分
解决的问题:一家人共用音箱时,新闻、音乐、闹钟互相干扰。音箱用轻量余弦打分在线区分用户,为每位家庭成员建立本地声纹档案,全程不上传云端,兼顾个性化与隐私。
具体案例:某智能音箱产品为四位家庭用户分别建档,孩子喊“播放动画片”自动切换儿童模式;大人声音因年龄变化后,系统提示重新注册,避免声纹漂移积累误差。
Python 演示
import numpy as np class SpeakerVerifier: def __init__(self, dim=128, enroll_num=3): self.dim = dim self.enroll_num = enroll_num self.models = {} def register(self, speaker_id, samples): # 注册: 多条语音取平均得到说话人模型 mean_vec = np.mean(samples, axis=0) norm = np.linalg.norm(mean_vec) self.models[speaker_id] = mean_vec / norm def cosine_score(self, model_vec, test_vec): # 余弦相似度打分: 方向越一致分数越高 dot_val = np.dot(model_vec, test_vec) norm_m = np.linalg.norm(model_vec) norm_t = np.linalg.norm(test_vec) return float(dot_val / (norm_m * norm_t + 1e-9)) def verify(self, speaker_id, test_vec, threshold=0.55): # 决策: 分数过红线放行 if speaker_id not in self.models: return False, 0.0 score = self.cosine_score(self.models[speaker_id], test_vec) return score >= threshold, score def evaluate(self, enrolled_ids, test_dict, threshold): # 评估: 统计 FAR 与 FRR far_try = 0 far_pass = 0 frr_try = 0 frr_reject = 0 for spk_id, samples in test_dict.items(): for test_vec in samples: if spk_id in enrolled_ids: frr_try += 1 ok, _ = self.verify(spk_id, test_vec, threshold) if not ok: frr_reject += 1 else: far_try += 1 for enroll_id in enrolled_ids: ok, _ = self.verify(enroll_id, test_vec, threshold) if ok: far_pass += 1 break far = far_pass / far_try if far_try > 0 else 0.0 frr = frr_reject / frr_try if frr_try > 0 else 0.0 return far, frr def make_speakers(num_spk, dim=128, noise=0.18, rng=None): # 合成数据: 每个说话人一条音色基底 identities = rng.normal(size=(num_spk, dim)) speakers = {} for i in range(num_spk): # 叠加随机扰动, 模拟本人状态变化 samples = identities[i] + rng.normal(0.0, noise, size=(5, dim)) speakers[str(i)] = samples return speakers def main(): rng = np.random.default_rng(7) speakers = make_speakers(20, rng=rng) verifier = SpeakerVerifier() enrolled = list(speakers)[:10] for spk_id in enrolled: verifier.register(spk_id, speakers[spk_id][:3]) test_dict = {spk_id: speakers[spk_id][3:] for spk_id in list(speakers)[:15]} best_tau = 0.5 best_gap = 1.0 eer_value = 0.0 for tau in np.arange(0.1, 1.0, 0.02): far, frr = verifier.evaluate(enrolled, test_dict, float(tau)) gap = abs(far - frr) if gap < best_gap: best_gap = gap best_tau = float(tau) eer_value = (far + frr) / 2.0 far, frr = verifier.evaluate(enrolled, test_dict, best_tau) print("Best threshold:", round(best_tau, 3)) print("FAR:", round(far, 3), "FRR:", round(frr, 3)) print("EER approx:", round(eer_value, 3)) if __name__ == "__main__": main()
identities = rng.normal(size=(num_spk, dim))给每个说话人随机生成一条“音色基底向量”,相当于老周记住的声带结构。samples = identities[i] + rng.normal(0.0, noise, size=(5, dim))在基底上叠加随机扰动,模拟同一人每次说话时感冒、情绪、环境的变化。mean_vec = np.mean(samples, axis=0)注册时取多条样本平均,对应保安“多听几遍”建立稳定音色档案。self.models[speaker_id] = mean_vec / norm归一化后存入模型库,只看音色方向、不看音量大小。dot_val / (norm_m * norm_t + 1e-9)余弦相似度打分公式,1e-9 防止除零。return score >= threshold, score决策动作:分数过红线放行,并返回分数供门卫复核。far_pass / far_try误放率 FAR:冒名者尝试中混进去的比例,衡量安全性。frr_reject / frr_try误拦率 FRR:真住户尝试中被拦下的比例,衡量便利性。for tau in np.arange(0.1, 1.0, 0.02)从低到高扫阈值,找 FAR 与 FRR 的交点,逼近 EER。if __name__ == "__main__": main()可执行入口,保证模块也能被其他脚本 import 复用。
常见误区
误区说话人验证和语音识别是一回事吧?反正都是把音频丢进模型,一个出文字,一个出结果,底层技术差不多。
正解两者任务目标完全不同。语音识别回答“说了什么”,把声音变成文字;说话人验证回答“是谁在说”,把声音对应到身份。门卫老周从不关心王阿姨说了哪句话,只关心开口的人是不是王阿姨——一个是速记员,一个是门卫,连评估指标都截然不同:语音识别看重字错误率,说话人验证看重 FAR/FRR 和 EER。
为何常见:两者同属语音技术领域、名字都带“识别”,接口都是“音频进、结果出”,初学者很容易把任务目标混为一谈。
误区注册声纹时多录几条肯定更准,最好录几十条,这样系统就能把我的声音记得死死的。
正解声音是时变信号,感冒、情绪、背景噪声都会改变特征。注册样本太多,会把不同状态甚至环境噪声一起平均进模型,反而稀释“稳定音色”;而且注册时长过长用户体验极差。工程上 3~5 条、总计 15~30 秒、尽量覆盖不同说话状态,才是稳健做法。老周建档其实也就听三遍:一遍听音调、一遍听语速、一遍听口音。
为何常见:“数据越多越好”是机器学习的一般直觉,但声纹是非平稳生物特征,平均统计时混入的环境偏置会掩盖真正有区分度的音色信息。
误区既然 EER 是评估指标,那 EER 最低的模型一定最优秀,选型时直接买它就对了。
正解EER 只描述 FAR 与 FRR 平衡点的整体水平,属于“综合成绩单”。真实业务往往需要非对称工作点:金融支付要求 FAR 极低,宁可多拦几个真用户也不放一个冒名人;门禁体验要求 FRR 低,宁可宽容可疑人也要让住户顺畅进出。同一模型在不同阈值下表现差异巨大,部署前必须按业务成本重新标定阈值。
为何常见:把学术评估指标直接当产品指标,忽略了真实业务对两类错误有完全不同的容忍度,这是从论文到工程最常见的脱节。
误区PLDA 不是把信道干扰建模进去了吗?那跨手机、跨环境验证应该百分百精准,不会受设备噪声影响了吧。
正解PLDA 是在概率意义上估计并扣除信道因子,属于“分摊干扰”,不是“物理消除”。语音不足 3 秒、极端噪声、强混响环境下,信道因子估计误差会大幅放大,识别率照样崩。真正上线还要靠前端信号增强、特征补偿和活体检测一起兜底。老周就算请了统计专家,楼道里放着音乐时,也得贴着门多听两句才敢开门。
为何常见:把“统计建模”误当成“物理降噪”,建模了不等于消除了,概率手段应对强干扰时存在明显的边界。
面试题
Q1. 说话人验证和语音识别最核心的区别是什么?
- A.一个认人一个认字← 正确答案
- B.一个在线一个离线
- C.一个收费一个免费
- D.一个简单一个复杂
答案:A。说话人验证的目标是“认人”,判断说话人身份;语音识别目标是“认字”,把声音转成文字。门卫老周只关心是不是住户,不关心对方说了哪句话;速记员则完全相反。B、C、D 与两者的本质差异无关。
Q2. 声纹注册时通常要求采集几条语音?
- A.1条即可足够稳定
- B.3到5条更鲁棒← 正确答案
- C.至少100条以上
- D.越多越慢不重要
答案:B。工程上 3~5 条、总计 15~30 秒,是稳健性与体验的常见平衡点。1 条容易被感冒、情绪等状态波动骗过;上百条让用户无法接受,还会把环境噪声平均进模型。老周听三遍说话就能记住稳定音色,道理相同。
Q3. MFCC 中的梅尔刻度主要模拟的是什么?
- A.人耳的非线性听感← 正确答案
- B.麦克风的采集噪声
- C.网络传输的丢包率
- D.音箱的频率响应
答案:A。梅尔刻度专门模仿人耳对低频精细、高频粗糙的非线性听觉特性。麦克风噪声、网络丢包、音箱频响都是需要抑制或补偿的工程干扰,不是梅尔刻度的设计动机。
Q4. 余弦相似度打分前为什么要做向量归一化?
- A.提高计算运行速度
- B.消除音量大小干扰← 正确答案
- C.让向量维度变低
- D.防止过拟合现象
答案:B。归一化让向量只看方向不看长度,避免“嗓门大的人天然得分高”。余弦相似度的复杂度与维度有关但与运行速度的提升无关,降维和防过拟合也不是归一化的目的。
Q5. 其他条件不变,把验证阈值调高会带来什么影响?
- A.FAR上升FRR下降
- B.FAR下降FRR上升← 正确答案
- C.FAR和FRR都上升
- D.FAR和FRR都下降
答案:B。阈值调高意味着通过条件变严:陌生人更难混入(FAR 下降),真住户也更容易被误拦(FRR 上升)。这正是决策环节“跷跷板关系”的核心直觉。
Q6. 相比余弦打分,PLDA 打分的核心优势是什么?
- A.不再需要注册过程
- B.能建模信道干扰因素← 正确答案
- C.计算速度快十倍
- D.支持任意语言文本
答案:B。PLDA 把声音拆成说话人因子与信道因子,专门建模麦克风、环境等干扰;余弦打分只是夹角比较,无法区分“本人变声”和“他人撞音”。PLDA 仍然需要注册,也并不以速度见长。
Q7. EER 这个评估指标描述的是什么?
- A.FAR与FRR相等点← 正确答案
- B.FAR恒等于零的点
- C.FRR恒等于零的点
- D.系统准确率最高点
答案:A。EER 定义为 FAR 与 FRR 相等时的共同错误率,是系统“公平考场”的平衡点。B、C 是单侧极值点不代表平衡,D 没有明确 FAR/FRR 的权衡,均不是 EER 的标准定义。
Q8. 实际部署声纹门禁时,以下哪项常与说话人验证配套使用?
- A.快速傅里叶变换
- B.活体检测防重放← 正确答案
- C.语音风格迁移
- D.文本情感分析
答案:B。录音重放是最常见的声纹攻击方式,门禁必须搭配活体检测(如随机口令朗读、红外感知口型)。FFT 属于特征提取的内部步骤,风格迁移和情感分析与身份验证无关。
Q9. 以下哪些属于说话人验证的典型应用场景?
- A.声纹门禁放行← 正确答案
- B.银行电话核身← 正确答案
- C.语音转写字幕
- D.智能音箱分人← 正确答案
答案:ABD。声纹门禁、银行电话核身、智能音箱区分家庭成员,都是“认人”类应用,属于说话人验证。语音转写字幕是“认字”,把声音变成文字,属于语音识别任务。
Q10. 关于 PLDA 对数似然比打分,正确的说法有哪些?
- A.似然比大于零为同人← 正确答案
- B.分子是同人联合概率← 正确答案
- C.分母为零则可判定
- D.综合注册与测试向量← 正确答案
答案:ABD。PLDA 打分 = log[P(两段声音|同人) / P(两段声音|异人)],因此分数大于 0 偏向同人,分子是“同人假设”下的联合概率,计算时必须同时使用注册向量与测试向量。分母是概率值,恒为正数,不可能为零,C 错误。