说话人识别中的分数规范化(Score Normalization)

概述

  • 在说话人辨认任务中,我们会将待验证的话语 t t t与已注册的话语集合 { e 1 , e 2 , . . . , e n } \left \{ e_1,e_2,...,e_n \right \} {e1,e2,...,en},计算相似度,得到 { s ( e 1 , t ) , s ( e 2 , t ) , . . . , s ( e n , t ) } \left \{ s(e_1,t),s(e_2,t),...,s(e_n,t) \right \} {s(e1,t),s(e2,t),...,s(en,t)},其中的最大值 s ( e i , t ) s(e_i,t) s(ei,t),会与阈值 t h th th比较
    { s ( e i , t ) ≥ t h , t 属于说话人 i s ( e i , t ) < t h , t 不属于任何一个说话人 \left\{\begin{matrix} s(e_i,t) \ge th,t属于说话人i \\ s(e_i,t) < th,t不属于任何一个说话人 \end{matrix}\right. {s(ei,t)th,t属于说话人is(ei,t)<th,t不属于任何一个说话人
  • 对于说话人验证任务,等价于说话人辨认任务中, n = 1 n=1 n=1的情形
  • 注意到,上述的阈值 t h th th是全局统一的,而且常常是在说话人验证任务中,暴力搜索出使得 E E R EER EER m i n D C F minDCF minDCF最小的阈值作为 t h th th
  • 但是,实际的任务常常是说话人辨认任务,不同的说话人,其对应的话语的区分度是不一样的,比如说:有的人的声音就是比较特别,而有的人的声音则比较大众化,此时采用全局统一的阈值进行说话人辨认则会不够合适
  • 此外,阈值 t h th th的选定,通常是在测试集中,进行暴力搜索得到的,如果说话人识别系统在运行时,面对的数据分布与测试集不一致,比如说测试集是英语,运行时是中文;测试时录音设备是录音棚,运行时录音设备是有线电话、或网络通话,此时的最佳阈值会随语种和录音设备的变化而发生偏移

分数规范化

  • 针对上述问题,人们提出了分数规范化方法,分数规范化的目的可以理解为领域自适应(Domain Adaptation),也就是更好地利用训练集的数据,使模型泛化到目标领域的数据中。简单而言就是,对于计算出的相似度分数,会先经过一个规范化操作,即:
    s ( e , t ) n o r m = s ( e , t ) − μ ( S ) σ ( S ) s(e,t)_{norm}=\frac{s(e,t)-\mu(S)}{\sigma(S)} s(e,t)norm=σ(S)s(e,t)μ(S)
    其中, S S S是用于计算统计量 μ \mu μ σ \sigma σ的一系列相似度分数。分数规范化后,仍然采用暴力搜索,找到使得 E E R EER EER m i n D C F minDCF minDCF最小的阈值作为 t h th th
  • 要得到 S S S,需要先采样出一系列话语,论文中常称为 c o h o r t cohort cohort c o h o r t cohort cohort是从训练集(为了检测出不同规范化方法的泛化能力,不能使用测试集进行分数规范化),采样出与 e e e不同的 N N N个说话人,每个说话人各取一个嵌入码 ε i \varepsilon_i εi ε i \varepsilon_i εi可以是该说话人所有嵌入码的均值,从而 c o h o r t cohort cohort可以记为 ϵ = { ε 1 , ε 2 , . . . , ε N } \epsilon=\left \{ \varepsilon_1,\varepsilon_2,...,\varepsilon_N \right \} ϵ={ε1,ε2,...,εN}
  • 常见的规范化方法有Z-norm、T-norm、S-norm和AS-norm,主要区别在于如何利用 c o h o r t cohort cohort,进行相似度的计算,得到 S S S
  • 下面基于说话人验证对各方法进行描述,如果要推广到说话人辨认,只需要对每个注册话语 e i e_i ei都进行同样的操作即可

Z-norm(Zero Score Normalization)

  • 利用 c o h o r t cohort cohort进行相似度计算的方法为:将 e e e c o h o r t cohort cohort中的每一个嵌入码计算相似度,即
    S e = { s ( e , ε 1 ) , s ( e , ε 2 ) , . . . s ( e , ε N ) } S_e=\left \{ s(e,\varepsilon_1),s(e,\varepsilon_2),...s(e,\varepsilon_N) \right \} Se={s(e,ε1),s(e,ε2),...s(e,εN)}
  • 利用 S e S_e Se进行规范化
    s ( e , t ) z − n o r m = s ( e , t ) − μ ( S e ) σ ( S e ) s(e,t)_{z-norm}=\frac{s(e,t)-\mu(S_e)}{\sigma(S_e)} s(e,t)znorm=σ(Se)s(e,t)μ(Se)

T-norm(Test Score Normalization)

  • 利用 c o h o r t cohort cohort进行相似度计算的方法为:将 t t t c o h o r t cohort cohort中的每一个嵌入码计算相似度,即
    S t = { s ( t , ε 1 ) , s ( t , ε 2 ) , . . . s ( t , ε N ) } S_t=\left \{ s(t,\varepsilon_1),s(t,\varepsilon_2),...s(t,\varepsilon_N) \right \} St={s(t,ε1),s(t,ε2),...s(t,εN)}
  • 利用 S t S_t St进行规范化
    s ( e , t ) t − n o r m = s ( e , t ) − μ ( S t ) σ ( S t ) s(e,t)_{t-norm}=\frac{s(e,t)-\mu(S_t)}{\sigma(S_t)} s(e,t)tnorm=σ(St)s(e,t)μ(St)

S-norm(Symmetric Normalization)

  • 利用 c o h o r t cohort cohort进行相似度计算的方法与Z-norm和S-norm一致,实际上,S-norm就是Z-norm和S-norm的算术平均
    s ( e , t ) s − n o r m = 1 2 ( s ( e , t ) z − n o r m + s ( e , t ) t − n o r m ) = 1 2 ( s ( e , t ) − μ ( S e ) σ ( S e ) + s ( e , t ) − μ ( S t ) σ ( S t ) ) \begin{aligned} s(e,t)_{s-norm}&=\frac{1}{2} (s(e,t)_{z-norm}+s(e,t)_{t-norm}) \\ &=\frac{1}{2} (\frac{s(e,t)-\mu(S_e)}{\sigma(S_e)} + \frac{s(e,t)-\mu(S_t)}{\sigma(S_t)}) \end{aligned} s(e,t)snorm=21(s(e,t)znorm+s(e,t)tnorm)=21(σ(Se)s(e,t)μ(Se)+σ(St)s(e,t)μ(St))
  • 之所以叫Symmetric Normalization,是因为 s ( e , t ) s − n o r m = s ( t , e ) s − n o r m s(e,t)_{s-norm}=s(t,e)_{s-norm} s(e,t)snorm=s(t,e)snorm

AS-norm(Adaptive score Normalization)

  • 注意到上述的三种规范化方法,都完全利用了 c o h o r t cohort cohort,即得到的相似度分数序列 S S S的长度,与 c o h o r t cohort cohort的长度一致
  • 同时,对于每个已注册的话语 e e e和待验证的话语 t t t,都采用了同样的 S S S,也就是说,对于那些与 e e e(或 t t t)相比,本来就区分度很大的说话人,也参与了分数规范化,这是次优的
  • AS-norm在 c o h o r t cohort cohort中选取了,与 e e e相似度分数最高的 t o p - n top \text{-} n top-n个嵌入码,组成 ϵ e t o p \epsilon_e^{top} ϵetop,以及与 t t t相似度分数最高的 t o p - n top \text{-} n top-n个嵌入码,组成 ϵ t t o p \epsilon_t^{top} ϵttop
  • 然后将 e e e ϵ e t o p \epsilon_e^{top} ϵetop中的每一个嵌入码计算相似度,得到 S e ( ϵ e t o p ) S_e(\epsilon_e^{top}) Se(ϵetop),以及将 t t t ϵ t t o p \epsilon_t^{top} ϵttop中的每一个嵌入码计算相似度,得到 S t ( ϵ t t o p ) S_t(\epsilon_t^{top}) St(ϵttop)
  • 最终的规范化还借鉴了S-norm
    s ( e , t ) a s − n o r m = 1 2 ( s ( e , t ) − μ ( S e ( ϵ e t o p ) ) σ ( S e ( ϵ e t o p ) ) + s ( e , t ) − μ ( S t ( ϵ t t o p ) ) σ ( S t ( ϵ t t o p ) ) ) \begin{aligned} s(e,t)_{as-norm}&=\frac{1}{2} (\frac{s(e,t)-\mu(S_e(\epsilon_e^{top}))}{\sigma(S_e(\epsilon_e^{top}))} + \frac{s(e,t)-\mu(S_t(\epsilon_t^{top}))}{\sigma(S_t(\epsilon_t^{top}))}) \end{aligned} s(e,t)asnorm=21(σ(Se(ϵetop))s(e,t)μ(Se(ϵetop))+σ(St(ϵttop))s(e,t)μ(St(ϵttop)))
  • t o p - n top \text{-} n top-n取值200~500都是可行的,常取300
  • AS-norm的动机可以理解为:要提高一个嵌入码的区分度,就要找到使得该嵌入码最不具有区分度的一个 c o h o r t cohort cohort,然后调整该嵌入码,使得其在这个 c o h o r t cohort cohort中也变得可区分,所谓调整指的是利用这个 c o h o r t cohort cohort的统计量,对该嵌入码进行规范化

你可能感兴趣的:(说话人识别,人工智能,深度学习,语音识别,音频)