parrots

GitHub
526 93 中等 1 次阅读 6天前Apache-2.0音频
AI 解读 由 AI 自动生成,仅供参考

Parrots 是一款开箱即用的语音智能工具箱,专注于提供高精度的自动语音识别(ASR)与文本转语音(TTS)服务。它有效解决了传统语音模型部署复杂、多语言支持不足以及情感表达单一的痛点,让用户能轻松实现中、英、日等多语言的语音互转。

无论是希望快速集成语音功能的开发者,还是从事相关算法研究的研究人员,亦或是需要制作多角色配音的内容创作者,都能从中受益。Parrots 不仅支持一键调用预训练模型,更集成了多项前沿技术亮点:其识别模块基于 distilwhisper,确保了跨语言的准确率;合成模块则融合了 GPT-SoVITS 与先进的 IndexTTS2 模型,不仅能进行零样本声音克隆,还能将说话人音色与情感表达解耦。这意味着用户可以独立控制语音的情感色彩和时长,甚至通过文本描述精准定制语气。此外,Parrots 还具备流式合成能力,显著降低延迟,非常适合实时对话场景。只需几行代码,即可在本地或云端构建高质量的语音交互应用。

使用场景

某跨国教育科技公司正在开发一款支持中英日多语言的实时口语陪练应用,需要快速集成高精度的语音识别与情感丰富的语音合成功能。

没有 parrots 时

  • 开发周期漫长:团队需分别寻找并调试独立的 ASR 和 TTS 模型,配置复杂的环境依赖,耗时数周才能跑通基础流程。
  • 多语言支持困难:难以找到单一模型同时高质量支持中、英、日三种语言,往往需要维护多套系统,导致架构臃肿。
  • 情感表达缺失:传统 TTS 生成的语音机械平淡,无法根据教学内容(如鼓励、严肃)调整语气,严重影响用户沉浸感。
  • 实时交互延迟高:缺乏原生的流式合成支持,用户说完话后需等待许久才能听到反馈,对话体验极不流畅。

使用 parrots 后

  • 开箱即用提速:通过 pip install parrots 一键安装,利用其封装好的 SpeechRecognitionTextToSpeech 类,半天内即可完成核心功能集成。
  • 统一多语言引擎:基于 distilwhisper 和 GPT-SoVITS,单个工具即可完美处理中、英、日混合输入与输出,大幅简化后端架构。
  • 情感精准控制:借助 IndexTTS2 模型,开发者可通过文本描述或参考音频,让 AI 老师生成带有“热情鼓励”或“耐心纠正”语气的真实人声。
  • 低延迟流式响应:启用流式 TTS 功能后,实现边生成边播放,将对话响应延迟降至毫秒级,提供如真人般自然的即时互动体验。

parrots 将原本繁琐的多模态语音工程简化为几行代码调用,让开发团队能专注于教育内容创新而非底层模型调优。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

非必需(支持 CPU 运行),若使用 GPU 加速需 NVIDIA GPU 及 CUDA 环境(具体版本未说明,建议匹配 PyTorch 版本)

内存

未说明(建议 8GB+ 以加载大型语音模型)

依赖
notes工具支持一键调用 ASR 和 TTS 模型,默认使用 CPU 即可运行,但推荐使用 GPU 以获得更低延迟。主要集成 distilwhisper(语音识别)、GPT-SoVITS 和 IndexTTS2(语音合成)模型。首次运行会自动从 HuggingFace 下载模型文件。支持流式 TTS 以实现低延迟实时输出。IndexTTS2 支持情感控制、时长控制和拼音混合建模。
python3.7+
torch
transformers
soundfile
numpy
loguru
librosa
parrots hero image

快速开始

🇨🇳中文 | 🌐English | 📖文档/Docs | 🤖模型/Models


Parrots: ASR和TTS工具包

PyPI版本 下载量 欢迎贡献 GitHub贡献者 许可证 Apache 2.0 Python版本 GitHub问题 微信群

简介

Parrots,自动语音识别(ASR)、文本到语音合成(TTS)工具包,支持中文、英文、日语等语言。

parrots实现了语音识别和语音合成模型一键调用,开箱即用,支持中英文。

特性

  1. ASR:基于distilwhisper实现的中文语音识别(ASR)模型,支持中、英等多种语言
  2. TTS:基于GPT-SoVITS训练的语音合成(TTS)模型,支持中、英、日等多种语言
  3. IndexTTS2:集成了 IndexTTS2 模型,支持情感表达和时长控制的零样本语音合成
    • 精确的语音时长控制
    • 情感与说话人身份解耦,独立控制音色和情感
    • 支持多种情感控制方式:音频参考、情感向量、文本描述
    • 高度表现力的情感语音合成
  4. 流式TTS:支持流式语音合成,实现低延迟的实时语音输出

安装

pip install torch # 或 conda install pytorch
pip install -r requirements.txt
pip install parrots

或者

pip install torch # 或 conda install pytorch
git clone https://github.com/shibing624/parrots.git
cd parrots
python setup.py install

演示

运行示例:examples/tts_gradio_demo.py 查看演示:

python examples/tts_gradio_demo.py

使用方法

ASR(语音识别)

示例:examples/demo_asr.py

import os
import sys

sys.path.append('..')
from parrots import SpeechRecognition

pwd_path = os.path.abspath(os.path.dirname(__file__))

if __name__ == '__main__':
    m = SpeechRecognition()
    r = m.recognize_speech_from_file(os.path.join(pwd_path, 'tushuguan.wav'))
    print('[提示] 语音识别结果:', r)

输出:

{'text': '北京图书馆'}

TTS(语音合成)

GPT-SoVITS基础用法

示例:examples/demo_tts.py

from parrots import TextToSpeech

# 初始化TTS模型(无需手动配置路径)
m = TextToSpeech(
    speaker_model_path="shibing624/parrots-gpt-sovits-speaker-maimai",
    speaker_name="MaiMai",
    device="cpu",  # 或 "cuda" 使用GPU
    half=False     # 设置为True使用半精度加速
)

# 生成语音
m.predict(
    text="你好,欢迎来到北京。这是一个合成录音文件的演示。Welcome to Beijing!",
    text_language="auto",  # 自动检测语言,也可指定 "zh", "en", "ja"
    output_path="output_audio.wav"
)

输出:

Save audio to output_audio.wav

流式TTS(低延迟)

支持流式语音合成,适用于实时对话场景:

from parrots import TextToSpeech
import soundfile as sf
import numpy as np

m = TextToSpeech(
    speaker_model_path="shibing624/parrots-gpt-sovits-speaker-maimai",
    speaker_name="MaiMai",
)

# 流式生成语音
audio_chunks = []
for audio_chunk in m.predict_stream(
    text="这是一段较长的文本,将会被流式合成为语音。",
    text_language="zh",
    stream_chunk_size=20  # 控制延迟,越小延迟越低
):
    audio_chunks.append(audio_chunk)
    // 这里可以实时播放audio_chunk

// 保存完整音频
full_audio = np.concatenate(audio_chunks)
sf.write("streaming_output.wav", full_audio, m.sampling_rate)

日志管理

控制日志输出级别:

from parrots import TextToSpeech
from parrots.log import set_log_level, logger

// 设置日志级别
set_log_level("INFO")  // 可选:DEBUG, INFO, WARNING, ERROR

m = TextToSpeech(
    speaker_model_path="shibing624/parrots-gpt-sovits-speaker-maimai",
    speaker_name="MaiMai",
)

# 使用 logger
logger.info("开始语音合成...")
m.predict(
    text="你好,世界!",
    text_language="zh",
    output_path="output.wav"
)

IndexTTS2 高级用法

IndexTTS2 是一个突破性的情感表达和时长控制的自回归零样本语音合成模型。

example: examples/demo_indextts.py

1. 基础语音克隆(使用单个参考音频)

from parrots.indextts import IndexTTS2

tts = IndexTTS2()
text = "你好,欢迎来到北京。这是一个合成录音文件的演示。"
tts.infer(text=text, output_path="gen.wav", verbose=True)

2. 情感语音合成(使用情感参考音频)

使用单独的情感参考音频来控制语音合成的情感表达:

from parrots.indextts import IndexTTS2

tts = IndexTTS2()
text = "酒楼丧尽天良,开始借机竞拍房间,哎,一群蠢货。"
tts.infer(
   speak_reference_audio_path_or_name='examples/voice_07.wav',  # 说话人音色参考
   text=text,
   output_path="gen.wav",
   emo_reference_audio_path="examples/emo_sad.wav",  # 情感参考音频
   verbose=True
)

3. 调整情感强度

通过 emo_alpha 参数(范围 0.0-1.0)调整情感影响程度:

from parrots.indextts import IndexTTS2

tts = IndexTTS2()
text = "酒楼丧尽天良,开始借机竞拍房间,哎,一群蠢货。"
tts.infer(
   speak_reference_audio_path_or_name='examples/voice_07.wav',
   text=text,
   output_path="gen.wav",
   emo_reference_audio_path="examples/emo_sad.wav",
   emo_alpha=0.6,  # 情感强度 60%
   verbose=True
)

4. 使用情感向量控制

直接提供 8 维情感向量来精确控制情感,顺序为: [开心, 生气, 悲伤, 害怕, 厌恶, 忧郁, 惊讶, 平静]

from parrots.indextts import IndexTTS2

tts = IndexTTS2()
text = "哇塞!这个爆率也太高了!欧皇附体了!"
tts.infer(
   speak_reference_audio_path_or_name='examples/voice_10.wav',
   text=text,
   output_path="gen.wav",
   emo_vector=[0, 0, 0, 0, 0, 0, 0.45, 0],  # 惊讶情感
   use_random=False,
   verbose=True
)

5. 基于文本的情感控制

启用 use_emo_text 可以根据文本内容自动推断情感:

from parrots.indextts import IndexTTS2

tts = IndexTTS2()
text = "快躲起来!是他要来了!他要来抓我们了!"
tts.infer(
   speak_reference_audio_path_or_name='examples/voice_12.wav',
   text=text,
   output_path="gen.wav",
   emo_alpha=0.6,
   use_emo_text=True,  # 启用文本情感分析
   use_random=False,
   verbose=True
)

6. 独立的情感文本描述

通过 emo_text 参数单独指定情感描述文本:

from parrots.indextts import IndexTTS2

tts = IndexTTS2()
text = "快躲起来!是他要来了!他要来抓我们了!"
emo_text = "你吓死我了!你是鬼吗?"  # 独立的情感描述
tts.infer(
   speak_reference_audio_path_or_name='examples/voice_12.wav',
   text=text,
   output_path="gen.wav",
   emo_alpha=0.6,
   use_emo_text=True,
   emo_text=emo_text,
   use_random=False,
   verbose=True
)

拼音控制说明:

IndexTTS2 支持中文字符和拼音的混合建模。当需要精确的发音控制时,请提供带有特定拼音标注的文本。 注意:拼音控制不支持所有可能的声母-韵母组合,仅支持有效的中文拼音。

示例:

text = "之前你做DE5很好,所以这一次也DEI3做DE2很好才XING2,如果这次目标完成得不错的话,我们就直接打DI1去银行取钱。"

命令行模式(CLI)

支持通过命令行方式执行ARS和TTS任务,代码:cli.py

> parrots -h                                    

NAME
    parrots

SYNOPSIS
    parrots COMMAND

COMMANDS
    COMMAND is one of the following:

     asr
       Entry point of asr, recognize speech from file

     tts
       Entry point of tts, generate speech audio from text

run:

pip install parrots -U
# asr example
parrots asr -h
parrots asr examples/tushuguan.wav

# tts example
parrots tts -h
parrots tts "你好,欢迎来北京。welcome to the city." output_audio.wav
  • asrtts是二级命令,asr是语音识别,tts是语音合成,默认使用的模型是中文模型
  • 各二级命令使用方法见parrots asr -h
  • 上面示例中examples/tushuguan.wavasr方法的audio_file_path参数,输入的音频文件(required)

Release Models

ASR

IndexTTS2

相关论文:

GPT-SoVITS TTS

speaker name 说话人名 character 角色特点 language 语言
KuileBlanc 葵·勒布朗 lady 标准美式女声 en
LongShouRen 龙守仁 gentleman 标准美式男声 en
MaiMai 卖卖 singing female anchor 唱歌女主播声 zh
XingTong 星瞳 singing ai girl 活泼女声 zh
XuanShen 炫神 game male anchor 游戏男主播声 zh
KusanagiNene 草薙寧々 loli 萝莉女学生声 ja
speaker name 说话人名 character 角色特点 language 语言
MaiMai 卖卖 singing female anchor 唱歌女主播声 zh

更新日志

v0.3.0 (2025-11)

  • 🔥 集成 IndexTTS2 模型,支持情感表达和时长控制的零样本语音合成
  • ✨ 支持多种情感控制方式:音频参考、情感向量、文本描述
  • ✨ 实现情感与说话人身份解耦,独立控制音色和情感
  • ✨ 支持拼音混合建模,实现精确发音控制
  • 🐛 修复 transformers 4.50+ 兼容性问题
  • 🐛 修复字典参数访问错误
  • 📝 新增 IndexTTS2 使用示例和文档

v0.2.0 (2025-10)

  • ✨ 新增流式 TTS 功能,支持低延迟实时语音合成
  • ✨ 新增统一的日志管理系统(基于 loguru)
  • 🐛 修复 PyTorch 2.0+ 的 weight_norm 弃用警告
  • 🐛 修复 torch.stftreturn_complex=False 弃用警告
  • 🐛 修复 librosa 的 resampletime_stretch 警告
  • 🔧 优化模型加载机制,无需手动添加 sys.path
  • 📝 完善文档和示例代码

v0.1.0 (2024-12)

  • 🎉 初始版本发布
  • ✨ 支持 ASR(语音识别)
  • ✨ 支持 TTS(语音合成)
  • ✨ 支持中、英、日多语言

Contact

  • Issue(建议):GitHub issues
  • 邮件我:xuming: xuming624@qq.com
  • 微信我:加我微信号:xuming624, 进Python-NLP交流群,备注:姓名-公司名-NLP

Citation

如果你在研究中使用了parrots,请按如下格式引用:

@misc{parrots,
  title={parrots: ASR and TTS Tool},
  author={Ming Xu},
  year={2024},
  howpublished={\url{https://github.com/shibing624/parrots}},
}

License

授权协议为 The Apache License 2.0,可免费用做商业用途。请在产品说明中附加parrots的链接和授权协议。

Contribute

项目代码还很粗糙,如果大家对代码有所改进,欢迎提交回本项目,在提交之前,注意以下两点:

  • tests添加相应的单元测试
  • 使用python -m pytest来运行所有单元测试,确保所有单测都是通过的

之后即可提交PR。

Reference

ASR(Speech Recognition)

TTS(Speech Synthesis)

版本历史

1.0.12024/02/12
0.1.52023/06/30

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|2天前
图像数据工具视频

GPT-SoVITS

GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。

56.4k|★★★☆☆|2天前
音频

TTS

🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。

45k|★★★☆☆|5天前
音频开发框架图像

LocalAI

LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获

44.8k|★★★☆☆|5天前
图像音频语言模型

bark

Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。

39.1k|★★★☆☆|4天前
音频

airi

airi 是一款开源的本地化 AI 伴侣项目,旨在将虚拟角色(如“二次元老婆”或赛博生命)带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力,让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。 airi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手,airi 允许用户在本地运行,不仅保护了对话隐私,还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天,甚至能直接参与《我的世界》(Minecraft)和《异星工厂》(Factorio)等游戏,实现了从单纯对话到共同娱乐的跨越。 这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者,以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持(涵盖 Web、macOS 和 Windows)以及强大的游戏交互能力,让 AI 不仅能“说”,还能“玩”。通过容器化的灵魂设计,airi 为每个人创造专属数字生命提供了可能,让虚拟陪伴变得更加真实且触手可及。

37.1k|★☆☆☆☆|3天前
语言模型音频Agent