摘要:Petto是一款基于Live2D的智能桌宠项目。提供了名人名言输出、语音唤醒对话、智能问候等多项交互功能。项目开源,支持Windows/Linux/macOS,支持高度自定义和多语言配置,并计划拓展语言。
一些更新
Petto 3.0.0已经于2025/11/3更新,最新版提供提高了截图稳定性;增加自动更新和快捷键唤醒的功能;并且可以使用我的另一个自由且开源的简单Live2D渲染器Kage来加载Live2D模型,提供了一个独立于Live2DViewerEX的开源替代方案。原来的Live2DViewerEX方案也仍然可以继续使用。
前言
前段时间在研究语音识别,借助夜雨飘零大佬的MASR项目,训练了一个中文的语音识别模型。
刚好,我当时正在寻找一个可以给我的Live2DViewerEX桌宠扩展功能的程序。我最初的目的实际上是希望可以找到一个办法让我的桌宠时不时发送两句名人名言,就像我博客底部的一言一样。但找了很久,似乎没有比较好的现成的项目。Live2DViewerEX自己的EXAI功能不再维护;除了Live2DViewerEX外,倒也有一些桌宠项目提供了类似的功能,但大都处于长期没有维护的状态。
正好看到Live2DViewerEX提供了开放API接口:ExAPI,于是便想着用ExAPI开发一个项目,便于和桌宠进行交互,顺便可以用上之前训练的语音识别模型。
支持的功能
虽然最初的想法只是让桌宠从一言API那里获取一段名人名言输出出来,但既然已经决定要自己写了,干脆多加些功能吧!
启用Petto后,每隔一定时间,桌宠将:
- 输出名人名言
- 根据当前天气气候、季节,以及你正在访问的窗口等信息,通过大语言模型输出问候语
- 根据当前时间,输出简单问候
- 流式语音识别、语音唤醒和语音及文本聊天
- 触发Live2d模型预定的动作

启用语音唤醒(后台流式识别)后,Petto在后台会一直进行流式识别。当检测到任何一个包含唤醒关键词的语音时,桌宠会向你发送消息并示意你与它对话:
用户:帮帮我
桌宠:主人,有什么需要我帮忙的呢?请告诉我哦~
随后,Petto会自动地开启十秒钟的录音识别,你可以与桌宠交流,录音识别结束后,桌宠将给出回复。
项目链接
项目主页:https://github.com/funnycups/petto
Petto遵循GPL3.0协议开源。如果喜欢,可以点个免费的star,阿里嘎多 
食用教程
- 下载Petto的Release包
- 解压到电脑的任意一个地方
- 确保你的Live2DViewerEX已经运行并加载了模型,然后运行petto.exe
- Done! 试试和你的桌宠对话吧!
进阶教程
本软件的设置项较多,你可以根据你使用的桌宠模型详细地编写角色的名字、设定、称呼,也可以自定义使用的语言模型LLM接口、语音识别ASR接口和文本转语音TTS接口。
你可以在Github项目主页的README上看到详细的设置教程,便于你自定义相关的配置。
Petto虽然内置了一部分本站提供的公开接口,但由于我的服务器性能有限,不一定撑得住大量语音识别请求的压力推荐参考项目README中的教程,自行在本机上运行大语言模型和流式语音识别接口。
FAQ
Q:ASR支持识别的语言?
A:如果你使用本站提供的流式识别接口,该接口仅能够识别中文。你可以考虑自行训练多语言模型,或者在设置中配置Whisper接口。
Q:软件支持哪些语言?
A:目前支持简体中文与英文。计划接下来进一步支持日语和其他语言,PR欢迎。
Q:支持哪些操作系统?
A:目前支持Windows,正在考虑MacOS支持(但我没有Mac电脑啊
)。由于Live2DViewerEX没有提供Linux版本,是否支持Linux取决于能否找到可供对接的桌宠软件或者我手搓一个
TODO
- 支持更多的语言
- 优化UI界面
- 添加语音认证
- MacOS和Linux支持
结语
我以往开发GUI一般都是用C++和Qt库,这是我第一次用Flutter框架和Dart语言开发应用,是一次很新奇的体验。
由于自身水平有限,导致本项目的UI界面的代码出现了嵌套过多的问题。Flutter在UI方面其实和HTML很像,HTML的写法也是套娃,但其作为标记语言,标签本身长度是比较短的,有时候看起来问题不太明显;但当我直接把HTML的编写习惯带入Flutter开发之后,问题就显现出来了。这个问题在将来的开发和维护中是需要避免的。
感谢Live2DViewerEX的ExAPI项目,感谢MASR语音识别项目,同时向本次开发中所涉及的所有软件和库的作者表达谢意!
本文作者:小欢
本文链接:Petto:让你的桌宠活起来!Live2D智能桌宠插件 - https://www.cups.moe/archives/petto.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 小欢博客 所有,遵循知识共享署名-相同方式共享 4.0 国际许可协议。转载请注明出处!



不确定原因+1。
输出时间的话,我好像看到日志里默认输出时间是3秒,不知道可否提供一个接口让它变长一些,因为我这里经常读不完30字hhh。字数的prompt的调整(更准确来说可以看你在petto里内置的prompt,大概也可以做一个接口调整一下?)
快捷键好诶!
By Nighten檬虎 at July 31st, 2025 at 11:37 am.
@Nighten檬虎
我知道了,都可以做。
字数的话,可以加个max_tokens参数设置,然后开放完整的prompt编辑设置,通过prompt调整字数应该比max_tokens要好,max_tokens会暴力截断。
By 小欢 at July 31st, 2025 at 11:51 am.
关注了!我想问一下petto点击聊天之后确认之后会闪退(但是会弹出在正常的对话结果)是正常的吗?
By Nighten檬虎 at July 26th, 2025 at 06:23 pm.
@Nighten檬虎
正常的,这是预期逻辑,发送消息后窗口会立刻自动隐藏。后续可能会考虑添加选项来控制该功能,进行连续对话
By 小欢 at July 26th, 2025 at 06:29 pm.
@小欢
或者考虑一下做个软件内快捷键自动打开petto?以及固定显示对话的快捷键。
By Nighten檬虎 at July 27th, 2025 at 01:45 pm.
@Nighten檬虎
我研究一下
By 小欢 at July 27th, 2025 at 05:21 pm.
@小欢
哦对了,我用的是GPT 4o的api,然后桌宠不知道为何经常会爆出一些奇怪的符号,比如这种句子会跳出来:
早安~宿主!阳光明媚、温暖的夏日来啦~出门旅途中要开开心心哦!爱你哟~ღ・v・ღ 云鼎赋得到的bin理论
?> Aunie띠 오른sta. 둏 걸ikwembuè
xycWant<까?>
tools ";讯卒(Token’ajourcing
supple
不知道为什么会这样,是不是可能有编码转换识别问题?
以及好像没有对输出时间的设定和输出字数的设定(两者好像都只能依赖日志,个人不太会汇编程序),可以考虑增加此类设定?
对于快捷键打开,我目前是用了autohotkey编了一个快捷键,不过这可能对大众用户而言操作太过复杂。
By Nighten檬虎 at July 30th, 2025 at 02:24 am.
@Nighten檬虎
By 小欢 at July 30th, 2025 at 01:47 pm.
@小欢
想起来了这事。不过目前还没看到github上发了更新x。所以过来看看怎么样了。
By Nighten檬虎 at October 22nd, 2025 at 09:49 am.
@Nighten檬虎
其实新版代码已经写好了,只是文档还没写好呢,所以一直没发
By 小欢 at October 22nd, 2025 at 06:35 pm.
@小欢
没事,不用做完再发,不用太追求这个uwu
By Nighten檬虎 at November 2nd, 2025 at 06:10 am.
@Nighten檬虎
3.0.0已经发布,欢迎测试
By 小欢 at November 3rd, 2025 at 02:23 pm.
@小欢
好的hhh,刚收到消息w让我试试。
By Nighten檬虎 at November 21st, 2025 at 06:52 am.
@小欢
不知道为什么这个回复没有发过来。不太清楚消息请求逻辑是怎么回事,但是好像确实经常有乱码,日后我再看看。
输出时间指的是默认输出好像是3秒,是否可以自定义和延长时间。回答的字数也是?默认好像是30字。
快捷键好耶!!
By Nighten檬虎 at August 5th, 2025 at 01:17 am.
狠狠关注了 真的很实用啊
By chen_tsuki at June 26th, 2025 at 08:27 pm.