51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【保姆级教程】突破开源天花板,实操利用ChatTTS与Kimi API联手打造个人语音AI助手,让自然流畅的智能对话成为现实!

之前给大家分享关于语音大模型讯飞星火、天工等等,但都是必源的。最近发现一个超酷开源的语音转文本ChatTTS项目,生成的语音文本效果逼真,支持中文和英文。结合kimi api,我给大家手搓一个语音AI助手,让大模型自然流畅地说出来!下面我给大家详细介绍,文末有实测对应的效果展示哦~

本文目录

  • ChatTTS开源语音天花板

    • ChatTTS项目介绍

    • 效果展示: 利用ChatTTS实现中文文本转语音

    • 效果展示: 利用ChatTTS实现英文语音转文本

  • kimi api接口介绍

    • 为什么要用api的方式来调用大模型?

    • kimi大模型介绍

    • kimi api相关限速介绍

    • 如何配置自己的api

    • 查看目前免费api的用量限制:

    • 充值来提高api接口的限制:

  • kimi api+ChatTTS打造个人语音AI助手

    • 配置对应的库

    • kimi大模型验证

    • 将其封装成函数

    • 问答对话语音展示

  • 参考文档

ChatTTS开源语音天花板

ChatTTS项目介绍

ChatTTS 文本转语音项目在github爆火出圈,引来大家极大的关注。短短三天时间,在 GitHub 上已经斩获了15.8k的Star量。

ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。

作者本人也在 x (原推特)上表示,ChatTTS 突破了开源天花板。不过,目前开源的只是基础大模型,没有经过 SFT 监督微调。

项目github地址: https://github.com/2noise/ChatTTS其具有下面特点:

  • 对话式 TTS: ChatTTS针对对话式任务进行了优化,实现了自然流畅的语音合成,同时支持多说话人。

  • 细粒度控制: 该模型能够预测和控制细粒度的韵律特征,包括笑声、停顿和插入词等。

  • 更好的韵律: ChatTTS在韵律方面超越了大部分开源TTS模型。同时提供预训练模型,支持进一步的研究。

下面我将给大家实操ChatTTS的效果展示。

效果展示: 利用ChatTTS实现中文文本转语音

配置对应的运行环境

from IPython.display import clear_output
!git clone https://github.com/2noise/ChatTTS
%cd ChatTTS
!pip install -r requirements.txt
!pip install openai==1.30.1
!pip install pynini==2.1.5 Cython   WeTextProcessing torchaudio
clear_output()

下载模型权重

import ChatTTS
import torch
torch._dynamo.config.cache_size_limit = 64
torch._dynamo.config.suppress_errors = True
torch.set_float32_matmul_precision('high')
from IPython.display import Audio

chat = ChatTTS.Chat()
chat.load_models()

进行模型推理实现中文文本转语音

输出的语音效果展示:


效果展示: 利用ChatTTS实现英文语音转文本

输出的语音效果展示:

效果是不是很惊艳,下面我将结合大模型来搭建个人语音AI助手~ kimi api接口介绍

为什么要用api的方式来调用大模型?

  1. 部分大模型未开源: 即没有开放模型参数权重,所以没法实现本地加载。

  2. 本地设备无法支持大模型推理: 大模型的参数量高达几百元甚至千亿的参数量,光是参数文件就高达几十G设置上百G的参数,更何况本地没有大型显卡推理,即使下载下来权重也无法运行。大模型推理是费钱费力。

  3. 易用、高效、定制化强: 通过api接口的方式,易用高效便于用户定制,用户只需要几行代码就可以定制自己的AI助手。环境只需要CPU就行,不需要昂贵的GPU,网络通畅就行。还能通过api的并发等来限制来收取会员费用。

kimi大模型介绍

目前kimi大模型有:

  • moonshot-v1-8k: 它是一个长度为 8k 的模型,适用于生成短文本。

  • moonshot-v1-32k: 它是一个长度为 32k 的模型,适用于生成长文本。

  • moonshot-v1-128k: 它是一个长度为 128k 的模型,适用于生成超长文本。以上模型的区别在于它们的最大上下文长度,这个长度包括了输入消息和生成的输出,在效果上并没有什么区别。这个主要是为了方便用户选择合适的模型。

kimi api相关限速介绍

之前给大家介绍,就是利用coze平台搭建的AI助手,其底层大模型对应的是免费的moonshot-v1-128k大模型。

  1. 对应就是并发为1

  2. RPM( request per minute)指一分钟内您最多向我们发起的请求数只有3次,

  3. TPM( token per minute)指一分钟内您最多和我们交互的token数只有32000个token数,

  4. TPD(token per day)指一天内您最多和我们交互的token数交互1.5M;

如何配置自己的api

首先你需要打开https://platform.moonshot.cn/console/info,进行登录注册,成功后进入下面界面点击右边的新建,命名后记得及时复制api密钥,下面需要用到。

查看目前免费api的用量限制:

充值来提高api接口的限制:

账号界面预览

用户新注册免费获得15元。

下面我将手把手给大家介绍如何利用kimi api+ ChatTTS来打造个人语音AI助手。

kimi api+chatTTS打造个人语音AI助手

配置对应的库

from IPython.display import clear_output
!git clone https://github.com/2noise/ChatTTS
%cd ChatTTS
!pip install -r requirements.txt
!pip install openai==1.30.1
!pip install pynini==2.1.5 Cython   WeTextProcessing torchaudio
clear_output()

# 配置kimi大模型的api
from openai import OpenAI
client = OpenAI(
    api_key = "kimiapi密钥",
    base_url = "https://api.moonshot.cn/v1",
)

kimi大模型验证

query="请问长江和嘉陵江相汇在什么地方"
completion = client.chat.completions.create(
    model = "moonshot-v1-128k",
    messages = [
        {"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},
        {"role": "user", "content": query}
    ],
    temperature = 0.3,
)
print(completion.choices[0].message.content)

长江和嘉陵江相汇的地方位于中国重庆市。嘉陵江在重庆市渝中区的朝天门码头汇入长江,形成了重庆独特的两江交汇景观。

将其封装成函数

def kimi_chat_speak(user_query,history):
    history.append({
        "role": "user", 
        "content": user_query
    })
    completion = client.chat.completions.create(
        model="moonshot-v1-128k",
        messages=history,
        temperature=0.3,
    )
    result = completion.choices[0].message.content
    history.append({
        "role": "assistant",
        "content": result
    })
    print("kimi: ", result)
    params_infer_code = {'prompt':'[speed_5]', 'temperature':.3}
    params_refine_text = {'prompt':'[oral_2][laugh_0][break_6]'}
    texts = [result]
    wavs = chat.infer(texts,
                  do_text_normalization=True,
                  params_refine_text=params_refine_text,
                  params_infer_code=params_infer_code)
    return wavs

问答对话语音展示

对话案例1效果展示:

对话案例2效果展示:


对话案例3效果展示:

怎么样,是不是很哇塞,快去尝试吧!

参考文档

  1. https://kimi.moonshot.cn/

  2. https://github.com/2noise/ChatTTS

z先生说

今天给大家分享ChatTTS开源语音转文本项目,结合Kimi等大模型的api可以轻松定制个人语音AI助手。如果你想进行商用,还请查看ChatTTS的github仓库了解更多相关的信息。

不管大模型怎么发展,终究只是一个工具,如何利用好它来提高我们的效率,这个才是最重要的! 如果本文对你有帮助,还请你点赞在看转发。你的支持就是我创作的最大动力,关注下面公众号不迷路~

赞(4)
未经允许不得转载:工具盒子 » 【保姆级教程】突破开源天花板,实操利用ChatTTS与Kimi API联手打造个人语音AI助手,让自然流畅的智能对话成为现实!