neuphonic/neutts

GitHub: neuphonic/neutts

NeuTTS 是一个开源的端侧文本转语音模型系列,支持即时语音克隆和实时流式生成,专为手机、嵌入式等资源受限设备优化。

Stars: 5755 | Forks: 621

# NeuTTS HuggingFace 🤗: - NeuTTS-Air (英语):[模型](https://huggingface.co/neuphonic/neutts-air),[Q8 GGUF](https://huggingface.co/neuphonic/neutts-air-q8-gguf),[Q4 GGUF](https://huggingface.co/neuphonic/neutts-air-q4-gguf),[Space](https://huggingface.co/spaces/neuphonic/neutts-air) - NeuTTS-Nano 多语言系列: - NeuTTS-Nano (英语):[模型](https://huggingface.co/neuphonic/neutts-nano),[Q8 GGUF](https://huggingface.co/neuphonic/neutts-nano-q8-gguf),[Q4 GGUF](https://huggingface.co/neuphonic/neutts-nano-q4-gguf) - NeuTTS-Nano-法语:[模型](https://huggingface.co/neuphonic/neutts-nano-french),[Q8 GGUF](https://huggingface.co/neuphonic/neutts-nano-french-q8-gguf),[Q4 GGUF](https://huggingface.co/neuphonic/neutts-nano-french-q4-gguf) - NeuTTS-Nano-德语:[模型](https://huggingface.co/neuphonic/neutts-nano-german),[Q8 GGUF](https://huggingface.co/neuphonic/neutts-nano-german-q8-gguf),[Q4 GGUF](https://huggingface.co/neuphonic/neutts-nano-german-q4-gguf) - NeuTTS-Nano-西班牙语:[模型](https://huggingface.co/neuphonic/neutts-nano-spanish),[Q8 GGUF](https://huggingface.co/neuphonic/neutts-nano-spanish-q8-gguf),[Q4 GGUF](https://huggingface.co/neuphonic/neutts-nano-spanish-q4-gguf) - [多语言 Space](https://huggingface.co/spaces/neuphonic/neutts-nano-multilingual-collection) [NeuTTS-Nano 演示视频](https://github.com/user-attachments/assets/629ec5b2-4818-4fa6-987a-99fcbadc56bc) _由 [Neuphonic](http://neuphonic.com/) 创建 - 致力于构建更快、更小、端侧的语音 AI_ 最先进的语音 AI 被锁定在 Web API 之后太久了。NeuTTS 是一系列开源、端侧的 TTS 语音语言模型,具有即时语音克隆功能。NeuTTS 基于 LLM 骨干网络构建,将听起来自然的语音、实时性能、内置安全性和说话人克隆带到您的本地设备上 - 开启了嵌入式语音代理、助手、玩具和合规安全应用的新类别。 ## 主要特点 - 🗣️ 同级别最佳的真实感 - 生成自然、超逼真、听起来像人类的语音,在速度、尺寸和质量之间达到实际应用的完美平衡 - 📱 专为端侧部署优化 - 提供GGUF格式的量化版本,可在手机、笔记本电脑甚至树莓派上运行 - 👫 即时语音克隆 - 只需 3 秒的音频即可创建您自己的说话人 - 🚄 简单的 LM + 编解码器架构 - 让开发和部署变得简单 ## 模型详情 NeuTTS 模型建立在小型 LLM 骨干网络之上 - 这些轻量级但功能强大的语言模型专为文本理解和生成进行了优化 - 并结合了旨在提高效率和质量的技术组合: - **支持的语言**:英语、西班牙语、德语、法语(取决于模型) - **音频编解码器**:[NeuCodec](https://huggingface.co/neuphonic/neucodec) - 我们的 50Hz 神经音频编解码器,使用单一 codebook 在低比特率下实现卓越的音频质量 - **上下文窗口**:2048 个 token,足以处理约 30 秒的音频(包括提示时长) - **格式**:提供GGUF格式的量化版本,以实现高效的端侧推理 - **责任**:输出带有水印 - **推理速度**:在中端设备上实现实时生成 - **功耗**:针对移动和嵌入式设备进行了优化 | | NeuTTS-Air | NeuTTS-Nano 模型 | |---|---:|---:| | **# 参数 (活跃)** | ~360m | ~120m | | **# 参数 (嵌入 + 活跃)** | ~552m | ~229m | | **克隆** | 是 | 是 | | **许可证** | Apache 2.0 | NeuTTS 开放许可证 1.0 | ## 吞吐量基准测试 这些基准测试针对的是 Q4_0 量化版本 [neutts-air-Q4_0](https://huggingface.co/neuphonic/neutts-air-q4-gguf) 和 [neutts-nano-Q4_0](https://huggingface.co/neuphonic/neutts-nano-q4-gguf)。请注意,NeuTTS-Nano 多语言系列中的所有模型都具有相同的架构,因此这些结果应适用于该系列中的任何 Q4_0 模型。 CPU 基准测试使用 [llama-bench](https://github.com/ggml-org/llama.cpp/tree/master/tools/llama-bench)(来自 llama.cpp)来测量多个上下文大小下的预填充和解码吞吐量。对于 GPU 基准测试 (RTX 4090),我们利用 vLLM 来最大化吞吐量,使用了 [vLLM benchmark](https://docs.vllm.ai/en/stable/cli/bench/throughput/)。 我们包含了四台设备上的基准测试:Galaxy A25 5G、AMD Ryzen 9HX 370、iMac M4 16GB、NVIDIA GeForce RTX 4090。 | | NeuTTS-Air | NeuTTS-Nano | |---|---:|---:| | **Galaxy A25 5G (仅 CPU)** | 20 tokens/s | 45 tokens/s| | **AMD Ryzen 9 HX 370 (仅 CPU)** | 119 tokens/s | 221 tokens/s | | **iMAc M4 16 GB (仅 CPU)** | 111 tokens/s | 195 tokens/s | | **RTX 4090** | 16194 tokens/s | 19268 tokens/s | ## 开始使用 NeuTTS 1. **安装 NeuTTS** pip install neutts 或者要在本地以可编辑模式安装,请克隆此仓库并在根文件夹中运行: pip install -e . 或者,要安装所有依赖项,包括 `onnxruntime` 和 `llama-cpp-python`(相当于下面的第 3 步和第 4 步): pip install neutts[all] 或者以可编辑模式安装: pip install -e .[all] 2. **(可选)安装 `llama-cpp-python` 以使用 `.gguf` 模型。** 要使用任何 GGUF 骨干网络(例如,在 basic_streaming_example.py 中),您需要安装 llama-cpp-python 包。 为了获得最佳性能,您必须针对特定的操作系统和目标设备(CPU 或 GPU)启用硬件加速,从源代码编译此包。 macOS (Apple Silicon) 对于 M 系列 Mac,强烈建议使用 Apple 原生的 Accelerate 框架以优化 CPU 性能: CMAKE_ARGS="-DGGML_METAL=OFF -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple" pip install "neutts[llama]" --force-reinstall --no-cache-dir Linux (OpenBLAS) 对于 Linux,您可以使用 OpenBLAS 来加速 CPU 性能。 *前置条件:确保您的系统上已安装 OpenBLAS(例如,在 Ubuntu 上使用 `sudo apt-get install libopenblas-dev`)。对于其他发行版,请参阅 [OpenBLAS 安装指南](https://github.com/OpenMathLib/OpenBLAS/blob/develop/docs/install.md)。* CMAKE_ARGS="-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS" pip install "neutts[llama]" --force-reinstall --no-cache-dir Windows (OpenBLAS) *前置条件:确保您的系统上已安装 OpenBLAS。请参阅 [OpenBLAS 安装指南](https://github.com/OpenMathLib/OpenBLAS/blob/develop/docs/install.md)。* 对于使用 PowerShell 的 Windows 用户,请设置环境变量并像这样运行安装命令: $env:CMAKE_ARGS="-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS"; pip install "neutts[llama]" --force-reinstall --no-cache-dir 寻找 GPU 支持? 如果您有专用 GPU(Nvidia/CUDA、AMD/ROCm、M 系列 Mac/Metal)并希望利用它而不是 CPU,CMAKE 标志将会有所不同。请参阅官方的 [llama-cpp-python 文档](https://github.com/abetlen/llama-cpp-python/blob/main/README.md),了解您的特定硬件所需的确切标志。 3. **(可选)安装 `onnxruntime` 以使用 `.onnx` 解码器。** pip install "neutts[onnx]" ## 示例 要开始使用示例脚本,请克隆此仓库并导航到项目目录: ``` git clone https://github.com/neuphonic/neutts.git cd neutts ``` 有几个可用的示例,包括 `examples` 文件夹中的一个 Jupyter notebook。 ### 基础示例 运行基础示例脚本来合成语音: ``` python -m examples.basic_example \ --input_text "My name is Andy. I'm 25 and I just moved to London. The underground is pretty confusing, but it gets me around in no time at all." \ --ref_audio samples/jo.wav \ --ref_text samples/jo.txt ``` 要为骨干网络或编解码器指定特定的模型仓库,请添加 `--backbone` 参数。可用的骨干网络已在 [NeuTTS-Air](https://huggingface.co/collections/neuphonic/neutts-air) 和 [NeuTTS-Nano 多语言系列](https://huggingface.co/collections/neuphonic/neutts-nano-multilingual-collection) huggingface 系列中列出。 ### 单代码块用法 ``` from neutts import NeuTTS import soundfile as sf tts = NeuTTS( backbone_repo="neuphonic/neutts-nano", # or 'neuphonic/neutts-nano-q4-gguf' with llama-cpp-python installed backbone_device="cpu", codec_repo="neuphonic/neucodec", codec_device="cpu" ) input_text = "My name is Andy. I'm 25 and I just moved to London. The underground is pretty confusing, but it gets me around in no time at all." ref_text = "samples/jo.txt" ref_audio_path = "samples/jo.wav" ref_text = open(ref_text, "r").read().strip() ref_codes = tts.encode_reference(ref_audio_path) wav = tts.infer(input_text, ref_codes, ref_text) sf.write("test.wav", wav, 24000) ``` ### 流式传输 语音也可以在_流式模式_下合成,其中音频分块生成并边生成边播放。请注意,这需要安装 pyaudio。为此,请运行: ``` python -m examples.basic_streaming_example \ --input_text "My name is Andy. I'm 25 and I just moved to London. The underground is pretty confusing, but it gets me around in no time at all." \ --ref_codes samples/jo.pt \ --ref_text samples/jo.txt ``` 同样,可以使用 `--backbone` 参数指定特定的模型仓库 - 请注意,对于流式传输,模型必须为 GGUF 格式。 ## 准备克隆参考 NeuTTS 需要两个输入: 1. 一个参考音频样本(`.wav` 文件) 2. 一个文本字符串 然后,模型会以参考音频的风格将文本合成为语音。这就是使 NeuTTS 模型具备即时语音克隆能力的原因。 ### 示例参考文件 您可以在 `samples` 文件夹中找到一些可以直接使用的参考: - 英语: - `dave.wav` - `jo.wav` - 西班牙语: - `mateo.wav` - 德语: - `greta.wav` - 法语: - `juliette.wav` ### 获得最佳效果的指南 为了获得最佳性能,参考音频样本应该满足: 1. **单声道** 2. **16-44 kHz 采样率** 3. **长度在 3-15 秒之间** 4. **保存为 `.wav` 文件** 5. **干净** — 尽量没有背景噪音 6. **自然、连续的语音** — 像独白或对话,停顿很少,以便模型能够有效地捕捉语气 ## 最小化延迟的指南 为了在设备上获得最佳性能: 1. 使用 GGUF 模型骨干网络 2. 预编码参考(参见 `examples/encode_reference.py` 或 `examples/basic_example.py`) 3. 使用 [onnx 编解码器解码器](https://huggingface.co/neuphonic/neucodec-onnx-decoder) 请查看 [示例 README](examples/README.md###minimal-latency-example) 中的此示例以开始使用。 ## 责任 NeuTTS 生成的每个音频文件默认包含一个 [Perth (感知阈值) 水印](https://github.com/resemble-ai/perth)。 注意:如果您在仓库中使用 `uv sync` 安装 neutts,程序仍会运行,但水印将被禁用(您将看到 perth 缺失的警告)。这是因为 `uv sync` 目前无法拉取所需的 Perth 依赖项,请参阅 [此问题](https://github.com/resemble-ai/Perth/)。要确保水印处于激活状态,请改为通过 PyPI 安装包 (`pip install neutts`)。 ## 免责声明 请不要使用此模型做坏事…… ## 开发者要求 要运行 pre commit 钩子来为此项目做贡献,请运行: ``` pip install pre-commit ``` 然后: ``` pre-commit install ``` ## 运行测试 首先,安装开发依赖: ``` pip install -r requirements-dev.txt ``` 要运行测试: ``` pytest tests/ ``` 要测试加载所有官方骨干网络和编解码器,请使用: ``` RUN_SLOW=true pytest tests/ ```
标签:AI模型, CNCF毕业项目, DLL 劫持, GGUF, HuggingFace, Neuphonic, NeuTTS, Q4, Q8, TTS, 人工智能, 凭据扫描, 声音克隆, 多语种, 大语言模型, 实时告警, 实时语音, 对话机器人, 嵌入式语音, 开源模型, 德语, 数字人, 文本转语音, 本地部署, 模型量化, 法语, 用户模式Hook绕过, 离线AI, 端侧AI, 网络安全, 英语, 西班牙语, 语言模型, 语音克隆, 语音助手, 语音合成, 边缘计算, 逆向工具, 隐私保护, 音频生成