From 2ac38adbe5f4e1374a079e032ed4b504351a207c Mon Sep 17 00:00:00 2001
From: zhifu gao <zhifu.gzf@alibaba-inc.com>
Date: 星期二, 23 四月 2024 18:08:57 +0800
Subject: [PATCH] Dev gzf exp (#1647)

---
 funasr/models/campplus/cluster_backend.py |   22 +++++++++++++---------
 1 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/funasr/models/campplus/cluster_backend.py b/funasr/models/campplus/cluster_backend.py
index 47b45d2..14fbbe1 100644
--- a/funasr/models/campplus/cluster_backend.py
+++ b/funasr/models/campplus/cluster_backend.py
@@ -1,14 +1,16 @@
-# Copyright (c) Alibaba, Inc. and its affiliates.
+#!/usr/bin/env python3
+# -*- encoding: utf-8 -*-
+# Copyright FunASR (https://github.com/alibaba-damo-academy/FunASR). All Rights Reserved.
+#  MIT License  (https://opensource.org/licenses/MIT)
+# Modified from 3D-Speaker (https://github.com/alibaba-damo-academy/3D-Speaker)
 
-from typing import Any, Dict, Union
-
-import hdbscan
-import numpy as np
 import scipy
+import torch
 import sklearn
-import umap
+import numpy as np
+
 from sklearn.cluster._kmeans import k_means
-from torch import nn
+from sklearn.cluster import HDBSCAN
 
 
 class SpectralCluster:
@@ -116,20 +118,21 @@
         self.metric = metric
 
     def __call__(self, X):
+        import umap.umap_ as umap
         umap_X = umap.UMAP(
             n_neighbors=self.n_neighbors,
             min_dist=0.0,
             n_components=min(self.n_components, X.shape[0] - 2),
             metric=self.metric,
         ).fit_transform(X)
-        labels = hdbscan.HDBSCAN(
+        labels = HDBSCAN(
             min_samples=self.min_samples,
             min_cluster_size=self.min_cluster_size,
             allow_single_cluster=True).fit_predict(umap_X)
         return labels
 
 
-class ClusterBackend(nn.Module):
+class ClusterBackend(torch.nn.Module):
     r"""Perfom clustering for input embeddings and output the labels.
     Args:
         model_dir: A model dir.
@@ -153,6 +156,7 @@
         if X.shape[0] < 20:
             return np.zeros(X.shape[0], dtype='int')
         if X.shape[0] < 2048 or k is not None:
+            # unexpected corner case
             labels = self.spectral_cluster(X, k)
         else:
             labels = self.umap_hdbscan_cluster(X)

--
Gitblit v1.9.1