製造業も大っきらい!!

製造業界で何とか生きているアラサー。IT/ライフハック/ガジェットが好きです。

Youtubeの字幕付き動画をDeepLでいい感じに翻訳する方法+英文へ句読点を付ける方法

DeepLでYoutube翻訳したい。

私、最近DeepLに課金しましたので、使い倒してやろうと考えてます。英語のページやYoutubeで使おうと考えていたのですが、ハマった部分があったのでメモとして残します。

対象者

  • Youtubeの字幕を翻訳したい方。
  • 音声認識で文字起こしされた字幕に、句読点を付けたい方。

※残念ながら、リアルタイムでDeepLを使って翻訳する方法は見つけられておりません。

単純なやり方。

  1. 文字起こしを表示させる

    youtube-string

  2. もし、タイムスタンプが表示されている場合切り替える

    switch timestanp

  3. そのまま貼り付けると、字幕の改行がそのまま反映されてしまうので、前処理を入れる必要があります。改行を処理してくれます。

sunafukey.fc2web.com もしくは、なぞり翻訳をつかうことで解決できます。

chrome.google.com

基本的に上記までを紹介しているサイトが多いのですが、今回問題が発生したので対応する必要がありました。

自動の文字起こしは句読点が付与されない

Youtubeの英語動画を度々みていて、気づいたのですが句読点が付与されているものと、一切句読点が付与されていないものに分けられます。

Youtubeの字幕テキストについて

実は、Youtubeの字幕テキストは、句読点がついているものとそうでないものがあります。 基本的には句読点無のものが多く、その場合DeepLで大きな問題を引き起こします。

句読点がついている英文

DeepLの問題点:辻褄合わせ

DeepLの場合辻褄合わせが行われることが知られています。 日本語と英語が必ずしも、同じ文章量にはなりません。しかし、圧倒的に文章量の圧縮が起きています。

辻褄合わせの翻訳

togetter.com

toggeterの方でまとめられていますが、ごっそりと、DeepLの翻訳が省略されることがあります。 これと音声認識の文章の相性が悪いように感じます。音声認識ですから、句読点の切れ目を見つけることは難しく、一文が長くなるので、認識精度も悪くなります。

一方でGoogle翻訳の場合は、省略は行わず翻訳した後に句読点を付与してくれます。翻訳のなめらかさは、DeepLに劣りますが、一番手軽に省略された翻訳を防ぐ手段としてかなり有用です。

google翻訳

なんとか句読点を付与する方法

DeepLの勝手に省略してしまう問題を根本的に解決するわけではないですが、Youtubeで字幕を翻訳して題意をつかむ程度なら、十分だと感じましたので紹介します。

nnsplit

pythonベースで簡単に利用できる。python使える人だったらすぐ。 github.com

一応使い方*1

pipでインストールして

//Install NNSplit with pip:
pip install nnsplit

必用に応じで、This is~の文字列部分を変更する。

from nnsplit import NNSplit
splitter = NNSplit.load("en")

# returns `Split` objects
splits = splitter.split(["This is a test This is another test."])[0]

# a `Split` can be iterated over to yield smaller splits or stringified with `str(...)`.
for sentence in splits:
   print(sentence)

出力されるのでリダイレクトで好きなテキストに放り込む等すれば使えます。

printのところは下記の処理を行うと、 - 先頭大文字 - 末尾空白削除 - ピリオド付与

使いやすいです。

for sentence in splits:
   print(string.capwords(str(sentence)).capitalize()+".")
プログラムが使えない場合

プログラムが使えない場合手間はかかりますが、下記のデモサイトでピリオドを自分で付与するのが楽かなと思います。

bminixhofer.github.io

他の対策

nnsplit以外にも何個かツールは存在するので紹介します。

We have published a model for text repunctuation and recapitalization for four languages / Habr

googlecolabでプログラムを実行するという手段もあります。 一回すべてをRUNにした後 colab.research.google.com

下記Enter input textの部分に入力すれば、勝手に文章に句読点が付与されます。

colab-textsplit

句読点付与ありのDeepL翻訳

先ほどより比較的文章量も多めで翻訳できました。これで今回はやりたいことに近づけることができました。

DeepL

まとめ

音声認識で文字起こしされたものは、句読点が分かり辛く翻訳の精度に影響を与える。そのため、句読点無の文章から句読点を付与する必要があり、2つの方法を紹介した。 また、検索している途中に気づいたのですが、googleAPIを使えば句読点付きで文章を返してくれるようです。

cloud.google.com