跳到主要内容
返回开发者精选

ToneBridge:按语境语气纠正中文句子的学习助手

作者:Alphaplasti、ZHAO JINGZI模型:MiniCPM4.1-8B

按场景语气小幅修改中文句子,附拼音与发音

ToneBridge 是一个中文造句助手,改句子时很克制:一次只动一点,让初学者慢慢写出自然的中文。它是 Hugging Face Build Small Hackathon 的参赛作品,核心是纠错模型 Alphaplasti/ToneBridge-MiniCPM4.1-8B,在 MiniCPM4.1-8B 上微调而来。

要解决的问题​

学中文的人常常知道自己想说什么,但拿不准这句话是否自然、是否礼貌、是否合适当下的场合。

翻译工具往往改得太多,语法工具又解释得太多。初学者真正需要的帮助范围很窄:留住我的意思,只改非改不可的地方,标上拼音,再用简单的英文告诉我为什么。

ToneBridge 就做这一件事。 选一组场景和语气,写下一句中文或者说出来,拿回一条面向学习、不面向翻译的小修改。

功能​

ToneBridge 会返回:

  • 修改后的中文句子;
  • 句子下方的拼音,带声调符号;
  • 错误类型,写得很短;
  • 一段简单的英文解释;
  • 一条下次能用的提示;
  • 普通话朗读,以及跟读视图。

纠错 prompt 刻意写得保守:句子本来就正确、自然,就原样返回,不做改动。

工作流程​

  1. 学习者选一种配置:Friendly-informal(朋友-非正式)、Work-informal(工作-非正式)、Work-formal(工作-正式)、Wechat-informal(微信-非正式)或 Wechat-formal(微信-正式)。
  2. ToneBridge 按这个配置做保守纠错,会考虑语气。
  3. 学习者输入一句中文,或者用浏览器语音识别说出来。
  4. MiniCPM 在保留原意和句子长度的前提下改句子。
  5. 前端在中文下面加上拼音。
  6. Edge TTS 给修改后的句子快速合成普通话神经网络语音。
  7. 播放音频时,朗读面板逐字高亮。

技术组成​

组件模型 / 库运行位置
句子纠错Alphaplasti/ToneBridge-MiniCPM4.1-8B,通过 transformers 加载ZeroGPU / GPU Space
普通话朗读edge-tts,默认音色 zh-CN-YunjianNeural服务端
拼音pypinyin,带声调符号CPU
语音输入浏览器 Web Speech API取决于浏览器
前端由 gr.Server 提供的自定义 HTML/CSS/JS浏览器
后端 APIgr.Server + @app.api() 端点Hugging Face Space

整个模型管线控制在 32B 参数以内:主纠错模型 8B,朗读默认走服务端的 Edge TTS 轻量调用,不再多加载一个 GPU 模型。

硬件与加载​

ToneBridge 是照着 Hugging Face ZeroGPU 设计的:

  • 纠错模型在 Space 启动时预加载,不会每次纠错都重新加载。
  • 朗读默认用 Edge TTS,重播时不用加载笨重的服务端 TTS 模型。
  • MiniCPM4.1 目前要 Transformers 4.x 运行时,requirements.txt 锁的是 transformers>=4.56.0,<5.0.0:Transformers 5 删掉了模型远程代码还在用的一个内部函数。

常用环境变量示例:

Plain Text
MODEL_ID=Alphaplasti/ToneBridge-MiniCPM4.1-8B
TTS_PROVIDER=edge
EDGE_TTS_VOICE=zh-CN-YunjianNeural
LOAD_IN_4BIT=true
PRELOAD_MODEL=true
MAX_INPUT_CHARS=1200
MAX_NEW_TOKENS=220

使用统计与反馈​

每次保存的纠错,默认写进运行中 Space 应用目录下的 tonebridge_usage_metrics.jsonl。一条记录包括原句、改后的句子、评价(thumbs_up、thumbs_down 或 null)、生成耗时,还有状态、场景、语气、纠错模式、错误类型、模型 ID、时间戳和请求 ID。

每次纠错后应用会显示点赞 / 点踩按钮,投票自动更新对应的 JSONL 记录。开启仓库同步(METRICS_REPO_SYNC=true,配上可写的 HF_METRICS_TOKEN)后,统计文件会出现在 Space 的 Files 页;Space 是公开的,同步出去的数据也就是公开的。

与 Reachy Mini 机器人联动​

设置面板能把每次纠错结果从学习者的浏览器发到本地 Reachy Mini 端点。放在浏览器端,是因为 Hugging Face Space 的服务器一般访问不到 192.168.x.x 这种私有局域网 IP。默认端点是:

Plain Text
http://<REACHY_IP>:80/api/tonebridge

请求体示例:

JSON
{
"source": "ToneBridge",
"event": "correction",
"status": "correct or corrected",
"emotion": "happy or thinking",
"speech": "encouragement or corrected Mandarin sentence",
"speech_language": "fr-FR or zh-CN",
"original_sentence": "...",
"corrected_sentence": "...",
"error_type": "...",
"generation_time_seconds": 3.2
}

句子本来就没问题时,Reachy 收到 emotion: "happy" 和一句简短的法语鼓励;ToneBridge 改过句子时,Reachy 收到 emotion: "thinking",朗读内容就是改后的中文。本地 Reachy 端点或桥接服务要允许来自 Space 源的浏览器 POST 请求(配 CORS,或者提供 HTTPS 本地端点)。

相关链接​

项目作者:Alphaplasti 与 ZHAO JINGZI。基础模型 MiniCPM4.1-8B 来自 OpenBMB。

项目信息

基于模型
MiniCPM4.1-8B
作者
Alphaplasti、ZHAO JINGZI