该Demo模拟同传模型STACL实时翻译的效果。
用户通过Chinese input文本框打字输入或者语音输入即本地麦克风收音,然后通过Jieba和BPE得到分词结果。
- Simultaneous Translation (wait 1)是读取1个token(分词后)后开始实时翻译;
- Simultaneous Translation (wait 3)是读取3个token(分词后)后开始实时翻译;
- Simultaneous Translation (wait 5)是读取5个token(分词后)后开始实时翻译;
- Full Sentence Translation(wait -1)是读取所有的token(分词后)即整句后开始翻译。
一般来说,waitk越大(waitk=-1可看作waitk=∞),读入的信息越多,实时翻译效果越好。由上图可见,STACL具有较好的预测性,较小的waitk也能得到较好的翻译结果。
.
├── README.md # 说明文档,本文件
├── const.py # 语音识别应用鉴权信息
├── demo.py # 启动demo的主程序文件
├── images
│ ├── speech_demo_show.gif # 语音同传Demo效果图
│ ├── paddlenlp.png # Demo界面logo
│ └── text_demo_show.gif # 文本同传Demo效果图
├── model_demo.py # STACL模型文件
├── models # 预训练模型路径
│ ├── nist_wait_1 # waitk=1模型
│ ├── nist_wait_3 # waitk=3模型
│ ├── nist_wait_5 # waitk=5模型
│ └── nist_wait_-1 # waitk=-1(整句模型)
├── requirements.txt # 环境依赖文件
└── transformer_demo.yaml # 参数配置文件
上述models目录下的模型可以在这里下载 ,下载完后将解压后的transformer.pdparams
分别放在不同的waitk策略对应的子目录下面。
可以在transformer_demo.yaml
文件中设置相应的参数,下面给出主要的参数配置:
src_bpe_dict
配置源语言(这里是中文)的BPE词表,中文BPE词表下载src_vocab_fpath
配置源语言(这里是中文)词表,source vocabtrg_vocab_fpath
配置目标语言(这里是英文)词表,target vocabdevice
选择预测用的设备,支持cpu/gpu/xpu,默认为cpu
需要配置const.py
里面语音识别的应用鉴权信息,只需要将APPID
和APPKEY
设置为自己所申请的。
申请教程:教程
- attrdict==2.0.1
- PyYAML==5.4.1
- subword_nmt==0.3.7
- jieba==0.42.1
- websocket-client==1.0.1
可通过安装命令:pip install -r requirements.txt
来进行安装。
注意:本项目依赖于Python内置包tkinter >= 8.6
- 查看
tkinter
的版本:python -c "import tkinter; print(tkinter.TkVersion)"
tkinter
官方文档
需要安装pyaudio==0.2.11
来调用本地麦克风,安装教程参考官网
安装失败,则只会启动文本同传。
- 下载预训练模型 ,并放在models目录下对应的子目录里;
- 下载词表(源语言词表,目标语言词表,BPE词表),并在配置文件
transformer_demo.yaml
中修改相应的参数; - 运行
demo.py
; - 出现界面,在Chinese input文本框中输入中文,按【回车键】开始实时翻译,或者按【REC】开始录音并开始实时翻译,遇到【。!?】结束整句,按【CLEAR】清空所有的输入和输出。
Q: 出现_tkinter.TclError: couldn't recognize data in image file
错误
A: 升级tkinter
,确保tkinter >= 8.6
Q: 出现Chinese input文本框无法输入中文
A: 升级tkinter
,确保tkinter >= 8.6