做这个主要是因为,我父母刷抖音的时候经常能收到一些汉语视频,但是他们看不懂。所以就想着做一款这种软件。
点击空白处退出提示
做这个主要是因为,我父母刷抖音的时候经常能收到一些汉语视频,但是他们看不懂。所以就想着做一款这种软件。
抖音翻译助手 App 功能介绍
将抖音视频中的汉语语音实时识别并翻译成维吾尔语,以悬浮字幕显示,供父母观看时实时理解。
核心链路:抖音语音 → 音频采集 → 语音识别 → 机器翻译 → 悬浮窗字幕
音频采集:录屏授权捕获抖音音频(无需麦克风),自动重采样,兼容安卓16,支持悬浮窗手动录音按钮。
语音识别(3种引擎):云端百度语音 / 本地Vosk离线 / 局域网FunASR(电脑端,GPU加速,最准确)。
机器翻译(4种引擎):云端阿里云(支持中维)/ 本地NLLB-200 ONNX(离线,支持INT8量化)/ 局域网NLLB-200 fp32(电脑端,质量最佳)。含Beam Search、重复惩罚、智能断句等质量优化。
悬浮窗字幕:原文+译文同显、可拖动、10秒自动消失、清空按钮、录音控制。
设置管理:侧边抽屉菜单,云端/本地/局域网三模式切换,API key加密存储,局域网地址+测试连通按钮,一键获取API、下载/导入模型。
电脑端服务器:提供翻译/识别HTTP接口,FunASR+NLLB-200,GPU加速,一键启动。
使用场景:在家有电脑用局域网(质量最佳);出门有网用云端;断网用本地。
我负责的任务
从零开发 Kotlin Android 应用,实现音频采集→语音识别→机器翻译→悬浮窗显示全链路。
设计云端/本地/局域网三模式架构,用工厂模式动态切换 ASR 和翻译引擎。
将 NLLB-200 模型转 ONNX 并 INT8 量化(2.5GB→1.7GB),实现手机端离线翻译。
用 Python 搭建电脑端服务器,集成 FunASR 识别 + NLLB-200 翻译,GPU 加速。
优化翻译质量:Beam Search、重复惩罚、智能断句。
通过 adb logcat 定位并修复 8 个深层 bug。
技术栈与架构
Android:Kotlin、MediaProjection、ONNX Runtime、OkHttp、悬浮窗
电脑端:Python、Flask、ONNX Runtime、FunASR、NLLB-200、CUDA
云端:阿里云翻译、百度语音
架构:策略+工厂模式,三模式(云端/本地/局域网)设置开关动态切换
亮点
三模式灵活切换,兼顾质量与可用性。
大模型端侧部署:NLLB-200 量化后手机离线运行。
GPU 加速识别与翻译。
Beam Search+重复惩罚+断句,提升长句质量。
模型空闲自动释放内存,防卡顿。
难点
ONNX 语言 token ID 与 transformers 不一致(维语 256187 vs 256188),逐一验证解决。
decoder 必须以 [EOS=2, tgt_lang] 开头,否则重复循环。
fp32 占 3GB 内存被系统杀死,INT8 量化+空闲释放解决。
Beam Search batch 维度广播 bug,np.repeat 扩展解决。
Android 16 录屏授权流程。
Android 9+ 明文 HTTP 被拦截。



评论