跳到正文

照片和语音 ​

有些人主要发送照片,有些人主要用语音消息交谈。iRoof.top 保留这两种习惯。

理解它们 ​

在媒体库中,用 AI 描述会描述贴纸、GIF 和照片,并使用媒体模型对语音消息进行语音转文字,该模型必须能接受图像和音频。在设置中或通过 OPENAI_MEDIA_MODEL 进行配置,例如 OpenRouter 上的 google/gemini-3.5-flash-lite。只有在你点击按钮时才会生成描述;使用本地模型和离线模式时,照片永远不会离开你的电脑。

text
<语音消息 0:05:“说了什么”>

当某一种类占主导时,风格档案会说明这一点,例如“主要用语音消息交谈(10 条中有 10 条)”。

大型媒体库 ​

一个长聊天可能包含数万个贴纸、GIF 和照片。媒体库可以帮助你把模型的 token 用在最重要的地方:

控件作用
类型标签全部、缺失、已描述、贴纸、GIF、照片、视频、语音,并显示数量
排序最常用(默认)、最少用、最近使用、最早使用
使用次数隐藏使用次数少于 2、3、5、10 或 25 次的项目
搜索在描述和 ID 中搜索

用 AI 描述 N 项会按所选顺序从上到下,每次四个,描述当前显示的、尚未描述的项目。每个描述一到达就会被保存。进度行会显示已完成的数量、失败数、速度和剩余时间。同一个按钮会变成停止:你可以随时停止,下一次运行会从剩余的项目继续。大型聊天的一个好的开始方式是:最常用的优先,以及使用 3 次或以上。

你的语音消息 ​

输入框为空时,发送按钮会变成一个麦克风,就像 Telegram 中一样。录音会在浏览器中转换为 WAV,然后上传并转为文字。分享链接的访客也可以录音。

INFO

浏览器只允许在 https:// 或 localhost 上录音。

角色的照片和语音 ​

连接一个能生成图像的 MCP 服务器,以及一个能说话的服务器:

json
{
  "img": {"command": "npx", "args": ["-y", "@dtst/img"],
          "env": {"OPENAI_BASE_URL": "https://openrouter.ai/api/v1", "OPENAI_API_KEY": "${OPENAI_API_KEY}", "OPENAI_MODEL": "meta/muse-image"}},
  "tts": {"command": "npx", "args": ["-y", "@dtst/tts"],
          "env": {"OPENAI_BASE_URL": "https://openrouter.ai/api/v1", "OPENAI_API_KEY": "${OPENAI_API_KEY}",
                  "OPENAI_MODEL": "google/gemini-3.8-flash-lite-tts", "OPENAI_VOICE": "Laomedeia"}}
}

这样,角色会多出两个动作:

动作作用
send_voice {text}调用语音工具(WAV 格式,失败时以 mp3 重试)并发送一条语音消息
send_photo {prompt, caption?}调用图像工具并发送一张照片
  • 连接了语音工具时,角色自己转写的语音消息会以 send_voice 的形式重放,让模型以它能够延续的形式看到这种习惯。
  • 聊天详情中的语音(例如 Puck)可以为角色提供它自己的声音。
  • MCP 工具返回的任何其他图像或音频都会成为聊天媒体 gen_…(按内容检查,最大 25 MB,并随聊天一起删除)。

费用

每张照片或每条语音消息都是一次额外的付费调用:使用 meta/muse-image 时每张图片约 0.01 美元,以及几秒钟的 TTS。

基于 MIT 许可证发布。