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

使用Mozilla TTS生成scale_stats.npy时遇AttributeError报错求助

问题

我在Windows系统下用Mozilla TTS训练自定义语音模型,参考教程走到倒数第二步生成scale_stats.npy时,运行指定输出文件和config.json的命令后,出现如下报错:

File "C:\Python311\Lib\site-packages\TTS\bin\compute_statistics.py", line 96, in <module>
    main()
  File "C:\Python311\Lib\site-packages\TTS\bin\compute_statistics.py", line 44, in main
    dataset_items = load_tts_samples(CONFIG.datasets)[0]  # take only train data
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\site-packages\TTS\tts\datasets\__init__.py", line 118, in load_tts_samples
    formatter = _get_formatter_by_name(formatter_name)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\site-packages\TTS\tts\datasets\__init__.py", line 166, in _get_formatter_by_name
    return getattr(thismodule, name.lower())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'TTS.tts.datasets' has no attribute ''

我已经在config.json里指定了数据集,包含.csv和.wav的数据集也准备完毕,路径检查过没问题,但搞不懂这个报错的意思,求帮忙。我的config.json内容如下:

{    
    "model": "Tacotron2",    
    "run_name": "TTS",    
    "run_description": "TTS model with my voice",    
    "audio":{        
        "fft_size": 1024,        
        "win_length": 1024,        
        "hop_length": 256,        
        "frame_length_ms": null,        
        "frame_shift_ms": null,        
        "sample_rate": 22050,        
        "preemphasis": 0.0,        
        "ref_level_db": 20,        
        "do_trim_silence": true,        
        "trim_db": 60,        
        "power": 1.5,        
        "griffin_lim_iters": 60,        
        "num_mels": 80,        
        "mel_fmin": 50.0,        
        "mel_fmax": 7600.0,        
        "spec_gain": 1,        
        "signal_norm": true,        
        "min_level_db": -100,        
        "symmetric_norm": true,        
        "max_norm": 4.0,        
        "clip_norm": true,        
        "stats_path": "scale_stats.npy"    
    },    
    "characters":{        
        "pad": "_",        
        "eos": "~",        
        "bos": "^",        
        "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!(),-.:;? ",        
        "punctuations":"!'(),-.:;? ",        
        "phonemes":"iyɨʉɯuɪʏʊeøɘəɵɤoɛœɜɞʌɔæɐaɶɑɒᵻʘɓǀɗǃʄǂɠǁʛpbtdʈɖcɟkɡqɢʔɴŋɲɳnɱmʙrʀⱱɾɽɸβfvθðszʃʒʂʐçʝxɣχʁħʕhɦɬɮʋɹɻjɰlɭʎʟˈˌːˑʍwɥʜʢʡɕʑɺɧɚ˞ɫäöüß"    
    },    
    "distributed":{        
        "backend": "nccl",        
        "url": "tcp:\/\/localhost:54321"    
    },    
    "reinit_layers": [],    
    "batch_size": 32,    
    "eval_batch_size":16,    
    "r": 7,    
    "gradual_training": [[0, 7, 64], [1, 5, 64], [50000, 3, 32], [130000, 2, 32], [290000, 1, 32]],    
    "mixed_precision": true,    
    "loss_masking": true,    
    "decoder_loss_alpha": 0.5,    
    "postnet_loss_alpha": 0.25,    
    "postnet_diff_spec_alpha": 0.25,    
    "decoder_diff_spec_alpha": 0.25,    
    "decoder_ssim_alpha": 0.5,    
    "postnet_ssim_alpha": 0.25,    
    "ga_alpha": 5.0,    
    "stopnet_pos_weight": 15.0,    
    "run_eval": true,    
    "test_delay_epochs": 10,    
    "test_sentences_file": null,    
    "noam_schedule": false,    
    "grad_clip": 1.0,    
    "epochs": 1000,    
    "lr": 0.0001,    
    "wd": 0.000001,    
    "warmup_steps": 4000,    
    "seq_len_norm": false,    
    "memory_size": -1,    
    "prenet_type": "original",    
    "prenet_dropout": false,    
    "attention_type": "original",    
    "attention_heads": 4,    
    "attention_norm": "sigmoid",    
    "windowing": false,    
    "use_forward_attn": false,    
    "forward_attn_mask": false,    
    "transition_agent": false,    
    "location_attn": true,    
    "bidirectional_decoder": false,    
    "double_decoder_consistency": true,    
    "ddc_r": 7,    
    "stopnet": true,    
    "separate_stopnet": true,    
    "print_step": 25,    
    "tb_plot_step": 100,    
    "print_eval": false,    
    "save_step": 10000,    
    "checkpoint": true,    
    "tb_model_param_stats": false,    
    "text_cleaner": "phoneme_cleaners",    
    "enable_eos_bos_chars": false,    
    "num_loader_workers": 4,    
    "num_val_loader_workers": 4,    
    "batch_group_size": 4,    
    "min_seq_len": 6,    
    "max_seq_len": 153,    
    "compute_input_seq_cache": false,    
    "use_noise_augment": true,    
    "output_path": "model",    
    "phoneme_cache_path": "cache",    
    "use_phonemes": true,    
    "phoneme_language": "de-de",    
    "use_speaker_embedding": false,    
    "use_gst": false,    
    "use_external_speaker_embedding_file": false,    
    "external_speaker_embedding_file": "../../speakers-vctk-en.json",    
    "gst":  {        
        "gst_style_input": null,        
        "gst_embedding_dim": 512,        
        "gst_num_heads": 4,        
        "gst_style_tokens": 10,        
        "gst_use_speaker_embedding": false    
    },    
    "datasets":        
        [            
            {                
                "name": "ljspeech",                
                "path": "/dataset",                
                "meta_file_train": "/dataset/metadata.csv",                
                "meta_file_val": null            
            }        
        ]
}

解决方案

这个报错的核心是代码尝试调用空字符串对应的数据集处理模块,本质是数据集格式器的识别出现问题,对应解决方法:

  • 调整数据集名称:
    如果你用的是自定义数据集,而非严格符合LJSpeech格式的数据集,把datasets里的name字段改成"custom",这是Mozilla TTS对自定义数据集的标准标识。

  • 显式指定格式器:
    若你的数据集完全符合LJSpeech格式,可在datasets配置里新增formatter字段,明确指定格式器名称,避免解析时出现空值:

    "datasets": [
        {
            "name": "ljspeech",
            "formatter": "ljspeech",
            "path": "/dataset",
            "meta_file_train": "/dataset/metadata.csv",
            "meta_file_val": null
        }
    ]
    
  • 修正Windows路径格式:
    你当前用的是Linux风格路径/dataset,Windows下需改为本地路径格式,比如"C:/你的数据集实际路径"或"./dataset"(相对路径),路径错误会导致数据集加载失败,间接引发格式器识别问题。

  • 验证数据集结构:
    确认metadata.csv的格式与LJSpeech一致(每行格式为音频ID|原始文本|规范化文本),且csv里的音频ID与对应.wav文件名完全匹配,无缺失或路径错误。


内容的提问来源于Stack Exchange,提问作者DasKeksSchwert3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:35:57