paddlespeech.vector.cluster.diarization模块

这个脚本包含用于说话人分离的基本函数。 这个脚本对开源的sklearn库有一个可选依赖。 根据需求,脚本中对一些sklearn函数进行了修改。

class paddlespeech.vector.cluster.diarization.EmbeddingMeta(segset=None, modelset=None, stats=None)[来源]

基础: object

一个将深度嵌入和元信息打包在一个对象中的工具类。

方法

align_models(model_list)

将当前的 EmbeddingMeta 的模型与模型列表对齐

align_segments(segment_list)

对当前 EmbeddingMeta 的段进行对齐,以匹配段列表

center_stats(mu)

中心一阶统计量。

get_mean_stats()

返回一级统计量的均值。

get_model_stat0(mod_id)

返回给定模型的零阶统计量

get_model_stats(mod_id)

返回给定模型的一阶统计量。

get_total_covariance_stats()

计算并返回一阶统计量的总协方差矩阵。

norm_stats()

将所有一阶统计量除以它们的欧几里得范数。

rotate_stats(R)

通过右乘来旋转一阶统计量。

sum_stat_per_model()

对每个模型的零阶和一阶统计量求和,并将它们存储在新的 EmbeddingMeta 中。

whiten_stats(mu, sigma[, isSqrInvSigma])

白化一阶统计量 如果 sigma.ndim == 1, 对角协方差的情况。

align_models(model_list)[来源]
Align models of the current EmbeddingMeta to match a list of models

作为输入参数提供。StatServer的大小可能会减少以匹配输入模型列表。

align_segments(segment_list)[来源]
Align segments of the current EmbeddingMeta to match a list of segment

作为输入参数提供。StatServer的大小可能会缩小以匹配输入的段列表。

center_stats(mu)[来源]

中心一阶统计量。

get_mean_stats()[来源]

返回一阶统计量的均值。

get_model_stat0(mod_id)[来源]

返回给定模型的零阶统计量

get_model_stats(mod_id)[来源]

返回给定模型的一阶统计量。

get_total_covariance_stats()[来源]

计算并返回一阶统计量的总体协方差矩阵。

norm_stats()[来源]

将所有一阶统计量除以它们的欧几里得范数。

rotate_stats(R)[来源]

通过右乘旋转一阶统计量。

sum_stat_per_model()[来源]

对每个模型求和零阶和一阶统计量,并将它们存储在新的EmbeddingMeta中。 返回一个EmbeddingMeta对象,其中包含按模型求和的统计量,以及一个包含每个模型会话的numpy数组。

whiten_stats(mu, sigma, isSqrInvSigma=False)[来源]

白化一阶统计量 如果 sigma.ndim == 1,斜对角协方差的情况。 如果 sigma.ndim == 2,一个具有完整协方差的单高斯分布的情况。 如果 sigma.ndim == 3,一个完整协方差 UBM 的情况。

class paddlespeech.vector.cluster.diarization.SpecClustUnorm(min_num_spkrs=2, max_num_spkrs=10)[来源]

基础: object

该类实现了具有未归一化亲和力矩阵的光谱聚类。 当亲和力矩阵基于余弦相似度时非常有用。

方法

cluster_embs(emb, k)

使用k均值对嵌入进行聚类。

do_spec_clust(X, k_oracle, p_val)

光谱聚类的函数。

get_eigen_gaps(eig_vals)

返回特征值之间的差异(间隙)。

get_laplacian(M)

返回给定亲和矩阵的未归一化拉普拉斯算子。

get_sim_mat(X)

返回基于余弦相似度的相似性矩阵。

get_spec_embs(L[, k_oracle])

返回光谱嵌入并使用最大特征间隙估计发言人数。

p_pruning(A, pval)

通过将不太相似的值置为零来优化亲和矩阵。

cluster_embs(emb, k)[来源]

使用kmeans对嵌入进行聚类。

Returns:
self.labels_self

每个样本嵌入的标签。

do_spec_clust(X, k_oracle, p_val)[来源]

用于光谱聚类的函数。

get_eigen_gaps(eig_vals)[来源]

返回特征值之间的差异(间隙)。

Returns:
eig_vals_gap_listlist

相邻特征值之间的差异(间隙)列表。

get_laplacian(M)[来源]

返回给定相似度矩阵的未归一化拉普拉斯算子。

Returns:
Larray

(n_samples, n_samples) 拉普拉斯矩阵。

get_sim_mat(X)[来源]

根据余弦相似度返回相似度矩阵。

Returns:
Marray

(n_samples, n_samples)。相似度矩阵,包含每对嵌入的余弦相似度。

get_spec_embs(L, k_oracle=4)[来源]

返回光谱嵌入并使用最大特征间隙估计说话者数量。

Returns:
embarray (n_samples, n_components)

每个样本的谱嵌入具有 n 个特征值分量。

num_of_spkint

估计的讲者数量。如果条件设置为oracle的讲者数量,则返回k_oracle。

p_pruning(A, pval)[来源]

通过将不太相似的值置为零来优化亲和力矩阵。

Returns:
Aarray

(n_samples, n_samples). 基于 p_val 的修剪亲和矩阵。

class paddlespeech.vector.cluster.diarization.SpecCluster(n_clusters=8, *, eigen_solver=None, n_components=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol=0.0, assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None, verbose=False)[来源]

基础: SpectralClustering

方法

fit(X[, y])

根据特征或相似度矩阵执行谱聚类。

fit_predict(X[, y])

X执行谱聚类并返回簇标签。

get_params([deep])

获取此估计器的参数。

perform_sc(X[, n_neighbors])

使用sklearn在嵌入上执行光谱聚类。

set_params(**params)

设置此估计器的参数。

perform_sc(X, n_neighbors=10)[来源]

使用 sklearn 在嵌入上执行谱聚类。

paddlespeech.vector.cluster.diarization.distribute_overlap(lol)[来源]

将重叠的语音均匀分配给不同发言者的相邻段落。

Returns:
new_lollist of list

它包含相邻段中不同发言者ID均匀分配的重叠部分。

paddlespeech.vector.cluster.diarization.do_AHC(diary_obj, out_rttm_file, rec_id, k_oracle=4, p_val=0.3)[来源]

对嵌入执行聚合层次聚类。

paddlespeech.vector.cluster.diarization.do_spec_clustering(diary_obj, out_rttm_file, rec_id, k, pval, affinity_type, n_neighbors)[来源]

对嵌入进行光谱聚类。此函数根据亲和力调用特定的聚类算法。

paddlespeech.vector.cluster.diarization.get_oracle_num_spkrs(rec_id, spkr_info)[来源]

返回录音中实际说话人数的真实值。 当条件是说话人数的真实值时,可以使用此功能。

paddlespeech.vector.cluster.diarization.is_overlapped(end1, start2)[来源]

如果段落重叠,则返回真。

Returns:
overlappedbool

如果片段重叠则为真,否则为假。

paddlespeech.vector.cluster.diarization.merge_ssegs_same_speaker(lol)[来源]

合并来自同一发言者的相邻子段。

Returns:
new_lollist of list

new_lol包含来自相同说话者ID的相邻段 merged。

paddlespeech.vector.cluster.diarization.read_rttm(rttm_file_path)[来源]

以列表格式读取并返回RTTM。

Returns:
rttmlist

包含RTTM文件行的列表。

paddlespeech.vector.cluster.diarization.spectral_clustering(affinity, n_clusters=8, n_components=None, random_state=None, n_init=10)[来源]

执行光谱聚类。

Returns:
labelsarray

每个样本的簇标签。

paddlespeech.vector.cluster.diarization.spectral_embedding(adjacency, n_components=8, norm_laplacian=True, drop_first=True)[来源]

返回光谱嵌入。

Returns:
embeddingarray

每个样本的光谱嵌入。

paddlespeech.vector.cluster.diarization.write_ders_file(ref_rttm, DER, out_der_file)[来源]

编写每个录音的最终DER。

paddlespeech.vector.cluster.diarization.write_rttm(segs_list, out_rttm_file)[来源]

以 RTTM 格式(标准 NIST 格式)写入段落列表。