youtube-streaming-translator-python
youtube-streaming-translator-python copied to clipboard
实时翻译油管直播,不知道怎么优化,闲置中
实时翻译油管直播
测试开发于Python >= 3.6
本脚本使用谷歌云语音转文字api与谷歌云翻译api/百度翻译实现对油管直播的实时字幕与翻译。
使用方法
0. 克隆本仓库
git clone github.com/azuse/youtube-streaming-translator-python
cd youtube-streaming-translator-python
1. 安装依赖库
pip install -r requirements.txt
注1:从noise_reduction中复制了降噪功能,降噪功能需要安装SOX,不需要使用可以把代码直接注释掉。
2. 添加谷歌api key到Path中
Linux&Mac
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Windows CMD
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
Windows PowerShell
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
例:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
3. *使用百度翻译API
脚本可以选择使用百度翻译API或谷歌翻译API,使用百度翻译API需要:
- 把翻译函数中的
baidu
设置为baidu=True
(目前在245行) - 在
baiduapi.py
中设置自己的APP ID
和SECRET KEY
4. 修改代理
- 不使用代理: 直接运行
- 使用代理:
Ubuntu/Linux
Windowsexport http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890
set http_proxy=http://127.0.0.0.1:7890 set https_proxy=http://127.0.0.0.1:7890
5. 修改直播地址
将url = "https://www.youtube.com/watch?v=ylFDswiFduE"
中的地址修改为您需要翻译的直播地址
注:如果地址不是直播的话,程序会自动开始下载完整视频(应该会提示报错)
6. 启动脚本
python main.google.py
7. 脚本输出
最后一行输出数字分别代表:
开始下载的视频片段数 下载完成的视频片段数 下载失败的视频片段数 开始转码的视频片段数 转码完成已经发向谷歌API的片段数 从谷歌API收到回复(翻译完成)的片段数
8. 浏览器输出
脚本会自动在0.0.0.0:5000上开一个http服务器,同时在0.0.0.0:5001和0.0.0.0:5002上开socket服务器。
访问http://127.0.0.1:5000
或http://你的服务器ip:5000
会打开显示字幕用的网页,网页分别从5001和5002的socket读取日文与中文字幕。
网页的CSS有待优化,目前只是一个测试效果。
9. *ChunkSize
油管的直播是以1s左右时间一段.ts文件的格式传输的,在将视频段转为音频后,可以决定要把多少段视频合在一起送给谷歌的流式音频识别API,决定多少段合并在一起的变量叫chunksize
。
如果设置为较小的值(1),每次音频识别API可能只会返回一个词,日译中效果不好(<-语音识别和翻译的ChunkSize也许可以分开设置?);如果设置为较大值(10),意味着每10s才会更新一次字幕;
所以chunksize
的大小对识别效果有很大影响,目前感觉设置为4
效果较好,每4s一个片段。但是,如果一句话跨越两个4s片段,流式音频识别API对于两个连起来的片段很多时候还是会拆成两句话来识别,导致中间内容丢失。
效果
使用OBS加载浏览器效果(推荐自己优化CSS)
开发计划
- ~~使用Flask添加Web前端,方便OBS直接从浏览器将字幕加载到转播中~~
- 优化前端CSS和JS
- 调教语音转文字和翻译
- ~~解决代理问题~~
- ~~增加百度翻译api~~
- 增加彩云小译API 增加IBM watson API