参数错误:单声道数据必须具有形状(samples,)。接收到的形状为(1, 87488721)

我目前正在使用Python进行说话人分割的工作,并使用pyannote来进行嵌入。我的嵌入函数如下所示:

import torchimport librosafrom pyannote.core import Segmentdef embeddings_(audio_path,resegmented,range):  model_emb = torch.hub.load('pyannote/pyannote-audio', 'emb')    embedding = model_emb({'audio': audio_path})  for window, emb in embedding:    assert isinstance(window, Segment)    assert isinstance(emb, np.ndarray)  y, sr = librosa.load(audio_path)  myDict={}  myDict['audio'] = audio_path  myDict['duration'] = len(y)/sr  data=[]  for i in resegmented:    excerpt = Segment(start=i[0], end=i[0]+range)    emb = model_emb.crop(myDict,excerpt)    data.append(emb.T)  data= np.asarray(data)    return data.reshape(len(data),512)

当我运行

embeddings = embeddings_(audiofile,resegmented,2)

我得到了以下错误:

ParameterError: Mono data must have shape (samples,). Received shape=(1, 87488721)

回答:

我遇到了同样的错误,但我找到了一个解决方法。对于我来说,错误是在”pyannote/audio/features/utils.py”中触发的,当它尝试使用以下代码行重新采样音频时:y = librosa.core.resample(y.T, sample_rate, self.sample_rate).T

这是我的解决方法

    def get_features(self, y, sample_rate):        # 转换为单声道        if self.mono:            y = np.mean(y, axis=1, keepdims=True)            y = np.squeeze(y)    # 添加这一行                # 如果采样率不匹配,则重新采样        if (self.sample_rate is not None) and (self.sample_rate != sample_rate):            y = librosa.core.resample(y.T, sample_rate, self.sample_rate).T            sample_rate = self.sample_rate        # 增强数据        if self.augmentation is not None:            y = self.augmentation(y, sample_rate)        # TODO: 这件事情有多耗时(需要进行性能分析...)        if len(y.shape) == 1:     # 添加这一行            y = y[:,np.newaxis]   # 添加这一行                    try:            valid = valid_audio(y[:, 0], mono=True)        except ParameterError as e:            msg = f"在增强波形时出现问题。"            raise ValueError(msg)        return y

y使用np.squeeze来进行librosa.core.resample,然后使用y[:,np.newaxis]将它的形状更改为(samples, 1)以用于valid = valid_audio(y[:, 0], mono=True)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注