Git Product home page Git Product logo

youtube-streaming-translator-python's Introduction

实时翻译油管直播

测试开发于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 IDSECRET KEY

4. 修改代理

  • 不使用代理: 直接运行
  • 使用代理:
    Ubuntu/Linux
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=http://127.0.0.1:7890
    Windows
    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:5000http://你的服务器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

youtube-streaming-translator-python's People

Contributors

azuse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

youtube-streaming-translator-python's Issues

Need help

What do these errors mean, which part did I did it wrong?
image

中英翻译

你好,我想知道这个怎么才能做到中英翻译。

        self.config = speech.types.RecognitionConfig(
            encoding=speech.enums.RecognitionConfig.AudioEncoding.LINEAR16,
            sample_rate_hertz=44100,
            language_code='en-US',
            max_alternatives=1,
            enable_automatic_punctuation=True,  # 启用标点符号
            diarization_config=speaker_diarization_config,  # 区分讲话人
            speech_contexts=speech_contexts  # 语音自适应

        )

我将上述的 language_code 写成了 en-US
但是我发现我实时翻译这个的时候,http://127.0.0.1:5000 这个网页没有任何输出

Speech2text timeout
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/local/Cellar/[email protected]/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "main.google.py", line 213, in run
    for response in responses:
UnboundLocalError: local variable 'responses' referenced before assignment
127.0.0.1 - - [14/Jan/2021 03:46:17] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [14/Jan/2021 03:46:26] "GET / HTTP/1.1" 200 -
146 146 0 145 145 4 0

而且运行对应的脚本出现以上错误,想知道这个错误是怎么原因造成的?

从谷歌API收到回复(翻译完成)的片段数 这两个字段总是 4和0
我这里播放的直播视频是英文视频可以请教一下如何解决这个问题吗?

Youtube DL

一直遇到这个问题,尝试了好多办法都无法解决。我应该怎么处理?
Connecting to youtube...
Traceback (most recent call last):
File "E:\youtube-streaming-translator-python-master\main.google.py", line 449, in
video = pafy.new(url)
File "E:\youtube-streaming-translator-python-master\venv\lib\site-packages\pafy\pafy.py", line 124, in new
return Pafy(url, basic, gdata, size, callback, ydl_opts=ydl_opts)
File "E:\youtube-streaming-translator-python-master\venv\lib\site-packages\pafy\backend_youtube_dl.py", line 31, in init
super(YtdlPafy, self).init(*args, **kwargs)
File "E:\youtube-streaming-translator-python-master\venv\lib\site-packages\pafy\backend_shared.py", line 97, in init
self._fetch_basic()
File "E:\youtube-streaming-translator-python-master\venv\lib\site-packages\pafy\backend_youtube_dl.py", line 53, in _fetch_basic
self._likes = self._ydl_info['like_count']
KeyError: 'like_count'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.