AI对练法力无边,更适合新手的口语对话练习应用
相较于听读能力,大多数人的说写能力普遍较为薄弱,笔者在Steam转区对接客服或使用TG等软件跟外国友人简单交流时也常常感到亚历山大。
然而,得益于 AI 技术的发展,如今写作可以借助AI工具实现更高效的辅助,而口语的提升也不再是遥不可及的目标,本期我们分享一款专为提升口语能力设计的小工具——BabelDuck。
BabelDuck 是一个面向各水平层次语言学习者的高度可定制化 AI 口语对话练习应用,并对初学者更友好,旨在将口语表达练习的门槛与心智负担降至最低。
主要功能
支持多对话管理、自定义系统提示词、流式响应等常见 AI 对话功能;
可在不影响当前对话的前提下,向 AI 寻求语法、翻译或表达润色等建议,并提供可定制化的快捷指令;
在对 AI 提供的建议有疑问时,可开启子对话进一步讨论,讨论结束后可无缝返回原对话;
支持语音输入与语音输出,集成了浏览器内置文本转语音 以及 Azure TTS;
集成多种 LLM AI 服务,支持自定义第三方 API 服务,可无缝切换;
数据存储于本地,确保用户数据隐私安全;
支持针对不同对话进行单独的偏好设置;
提供多语言界面;
内置使用教程;
部署流程
在常用的docker文件目录下准备一个专属文件夹,以威联通为例具体路径为
/share/Container/babelduck。
准备一个.env文件,变量内容后面是我们对应的AI模型的聊天地址、API_KEY以及模型名称(3.0、4.0等)。点我下载案例文件,可以直接填写,也可以全部留空等部署完毕后到网页端填写。注意最后把.example删掉。
# unforunately, the implementation of input handlers is coupled with openai at this time,
# so openai or openai-compatible services are necessary here (json mode required), once we decouple it from openai (working on it), we can remove this
OPENAI_CHAT_COMPLETION_URL=
OPENAI_API_KEY=
OPENAI_MODEL_NAME=

# another unfortunate thing is that the stt feature is coupled with siliconflow for now,
# so we need to provide the api url and api key as well, you can get the key from https://cloud.siliconflow.cn/account/ak
# Also, once we decouple it from siliconflow (which has been on the roadmap), we can remove these two variables
STT_API_URL=https://api.siliconflow.cn/v1/audio/transcriptions
SILICONFLOW_API_KEY=
打开Docker管理工具,创建新的应用程序。以威联通NAS为例,打开Container Station,将以下代码复制并修改后粘贴进框内,点击创建。注意代码的格式对齐!
version: '3' # 最新版可删除该行
services:
babel-duck:
image: orenoid/babel-duck:latest
container_name: babel-duck
env_file:
- /share/Container/babelduck/.env
ports:
- "9001:9000"
restart: unless-stopped
部署完毕后,网页端输入NAS_IP:7777即可访问。
反向代理
该项目建议搞一搞,不然可能报错。关于Lucky的部署及使用方法,请参照该篇文章。
反代神器,懒人利器!Docker网络工具Lucky部署使用流程记录
具体的子配置如下图所示。
使用
初始界面如下,可进行一些预设置。界面语言和想要练习的语言目前支持中、英、日文,其他设置咱们根据自身情况选择。
进入对话界面,图标估计作者压根还没搞。
来看下设置界面。
语音模型可使用浏览器内置(完全够用)或者Azure(需要订阅密钥)。
模型可以选择默认,或者其他的免费AI大模型,毕竟Open的token独立收费还不便宜。
例如注册一个openrouter。因为不同平台提供的 URL 前缀都不统一,BabelDuck 没法自动补充路径,只能由用户自行填入完整 URL(引自作者)。
我经过测试的确有效,还可以看到项目的自动纠错功能。