You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Tacotron训练Notebook中遇TypeError错误,求解决方案

问题解决:Tacotron训练中TypeError: mel() takes 0 positional arguments but 5 were given

错误分析

报错核心是mel()函数被传入5个参数,但该函数定义未接收任何参数。结合你提供的create_mels()代码,问题出在TacotronSTFT类内部的mel函数实现,而非create_mels()本身——给create_mels()加self完全无效,因为它不是类方法。

修复步骤

  1. 修正语法错误
    你的save_mel函数最后一行末尾有多余的点,先删除:

    np.save(filename.replace('.wav', ''), melspec)  # 去掉末尾的.
    
  2. 检查并修正TacotronSTFT类的mel函数
    找到layers模块中的TacotronSTFT类,确保其中的mel方法(或调用的外部mel函数)定义正确:

    • 如果mel是类成员方法,必须包含self参数,示例实现:
      class TacotronSTFT(nn.Module):
          def __init__(self, filter_length, hop_length, win_length, n_mel_channels, sampling_rate, mel_fmin, mel_fmax):
              super(TacotronSTFT, self).__init__()
              self.filter_length = filter_length
              self.mel_basis = librosa.filters.mel(
                  sr=sampling_rate, n_fft=filter_length,
                  n_mels=n_mel_channels, fmin=mel_fmin, fmax=mel_fmax
              )
              # 其他初始化代码
      
          def mel(self, specgram):
              # 正确接收self和输入频谱参数
              return torch.matmul(specgram, torch.from_numpy(self.mel_basis).float().to(specgram.device))
      
          def mel_spectrogram(self, audio):
              # 先计算线性频谱(需确保stft方法已正确实现)
              linear_spec = self.stft(audio)
              # 调用mel方法转换为梅尔频谱
              return self.mel(linear_spec)
      
    • 如果mel是独立函数,确保它接收所需的5个参数,示例:
      def mel(specgram, sampling_rate, n_mel_channels, mel_fmin, mel_fmax):
          mel_basis = librosa.filters.mel(
              sr=sampling_rate, n_fft=specgram.size(1),
              n_mels=n_mel_channels, fmin=mel_fmin, fmax=mel_fmax
          )
          return torch.matmul(specgram, torch.from_numpy(mel_basis).float().to(specgram.device))
      
  3. 验证参数传递匹配
    确保你实例化TacotronSTFT时传入的hparams.filter_length等参数都已正确定义,且mel_spectrogram方法内部调用mel时的参数数量与mel函数定义完全匹配。

内容的提问来源于stack exchange,提问作者Tristan Killett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:20:10