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_model_stat0(mod_id)返回给定模型的零阶统计量
get_model_stats(mod_id)返回给定模型的一阶统计量。
计算并返回一阶统计量的总协方差矩阵。
将所有一阶统计量除以它们的欧几里得范数。
rotate_stats(R)通过右乘来旋转一阶统计量。
对每个模型的零阶和一阶统计量求和,并将它们存储在新的 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的大小可能会缩小以匹配输入的段列表。
- 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_sim_mat(X)返回基于余弦相似度的相似性矩阵。
get_spec_embs(L[, k_oracle])返回光谱嵌入并使用最大特征间隙估计发言人数。
p_pruning(A, pval)通过将不太相似的值置为零来优化亲和矩阵。
- 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)设置此估计器的参数。
- 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
每个样本的光谱嵌入。