Upgrade to Pro — share decks privately, control downloads, hide ads and more …

自分の解らない言語の動画を翻訳して視聴

 自分の解らない言語の動画を翻訳して視聴

Kenichiro MATOHARA

November 11, 2023
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. 自分の解らない言
    語の動画を翻訳し
    て視聴
    Kenichiro Matohara(matoken)
    1

    View full-size slide

  2. matoken
    南隅から参加(鹿児島の右下)
    好きなLinuxディストリビューションはDebian
    鹿児島らぐもやってます → Next 2023-11-19(sun)
    map: © OpenStreetMap contributors
    Kenichiro Matohara(matoken) https://matoken.org
    https://inari.opencocon.org/@matoken
    https://www.kagolug.org/
    2

    View full-size slide

  3. 英語とか解らない……
    — 英語アプリ5〜15分/dayくらいやってるけど……
    3

    View full-size slide

  4. コンピュータに頼る
    Youtubeの自動文字起こし,機械翻訳
    STT で文字起こし
    機械翻訳
    リアルタイム翻訳
    スライドOCR
    4

    View full-size slide

  5. Youtubeの自動文字起こし,機械翻

    Youtubeの動画は自分で字幕をアップロードできる
    字幕がない場合字幕が自動生成される(Whisperに比べると精度は
    良くない)
    字幕は機械翻訳で各種言語に翻訳されて利用できる
    5

    View full-size slide

  6. — 字幕アイコンクリックで字幕On,⚙->字幕->自動翻訳->日本語
    6

    View full-size slide

  7. Youtube自動で日本語字幕
    毎回手動で字幕設定は面倒
    UserScript で自動的に日本語字幕Onにする
    Firefox + Tampermonkey +
    "YouTubeで自動翻訳字幕(日本語)を常にオン"
    便利
     類似のUserScript はいくつかあるので好みのものを
    https://greasyfo
    youtube%E3%81%A7%E8%87%AA%E5%8B%95%E7%B
    %E6%97%A5%E6%9C%AC%E8%AA%9E-
    %E3%82%92%E5%B8%B8%E3%81%AB%E3%82%AA%
    7

    View full-size slide

  8. Youtube動画ダウンロードして視聴(
    yt-dlp 利用 )
    "yt-dlp/yt-dlp: A youtube-dl fork with additional
    features and fixes"
    $ yt-dlp --write-auto-subs --sub-langs "ja*" --embed-thumbnail -f '(mp4)+[height<240]'
    https://www.youtube.com/playlist?list=PL9fPq3eQfaaDHitxbJP25H8wMgYrc8L9b
    https://github.com/yt-dlp/yt-dlp
    8

    View full-size slide

  9. Youtube に無い動画(VOD)
    ダウンロードして文字起こし,日本語翻訳する
    文字起こしにはOpenAI のWhisper のc++ 実装の
    Whisper.cpp を利用( 対応GPU がない場合はお勧め )
    翻訳には ArgosTranslate を利用
    ここでは
    を変換した
    DebConf 23 動画 https://meetings-
    archive.debian.net/pub/debian-
    meetings/2023/DebConf23/
    9

    View full-size slide

  10. 詳細は過去の発表を
    OpenAIのWhisper でオフライン文字起こし(STT)
    機械翻訳をローカルマシンで( ArgosTranslate/LibreTranslate
    )
    https://speakerdeck.com/matoken/openainowhisper-
    deohurainwen-zi-qi-kosi-stt
    https://gitlab.com/matoken/kagolug-
    2022.11/-/blob/master/slide/slide.adoc
    https://speakerdeck.com/matoken/libretranslate
    https://gitlab.com/matoken/kagolug-
    2022.12/-/blob/master/slide/slide.adoc
    10

    View full-size slide

  11. 動画の入手
    https://gitlab.com/matoken/debconf23_stt/-/blob/main/get
    — 回線の問題で23:15〜06:45 の間だけダウンロードするようにして
    いた
    $ timeout $(( $timeout - ${now} )) wget -c -np -nd -nH -r -A .lq.webm -o - \
    https://meetings-archive.debian.net/pub/debian-meetings/2023/DebConf23/
    11

    View full-size slide

  12. 文字起こしのために動画を16k wav
    形式に変換
    https://gitlab.com/matoken/debconf23_stt/-/blob/main/vide
    — 文字起こしに使うWhisper.cppは16k wav のみ対応なので変換し
    ておく(Whisper は動画のままでok)
    ffmpeg -i "${file}" -ar 16000 -vn "${wav}"
    12

    View full-size slide

  13. Whisper.cpp を使い文字起こし
    https://gitlab.com/matoken/debconf23_stt/-/blob/main/wav
    — base.en の英語のモデルを使い .vtt 形式の字幕ファイルに書き出

    $ ~/src/whisper.cpp/main -m ~/src/whisper.cpp/models/ggml-base.en.bin -l en \
    --output-vtt --print-colors -f "${wav}"
    13

    View full-size slide

  14. Argos Translate で機械翻訳
    OSS のArgos Translate で字幕ファイルを英語から日本語に機械翻

    $ cat ./trans.sh
    #!/bin/bash
    while read str;
    do
    if [ "${str}" == '' ]
    then
    echo ${str}
    elif [ "${str}" == "WEBVTT" ]
    then
    echo ${str}
    elif grep -q "^[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9] --> [0-9][0-9]:[0-9][0
    then
    echo ${str}
    elif grep -q "^ \[" <<< "${str}"
    then
    echo ${str}
    else
    echo -n ' '
    argos-translate -f en -t ja "${str}"
    fi
    done < $1
    $ bash ./trans.sh ./${SUBTITLE}.vtt > ${SUBTITLE}.ja.vtt
    14

    View full-size slide

  15. 字幕を表示
    *.en.vtt , *.ja.vtt が出来たのでこれを動画と同じディレクトリに置い
    て,動画を再生すると字幕が表示される.
    若しくは動画に字幕ファイルを埋め込む.
    $ ffmpeg -i video.webm -vf subtitles=video.ja.vtt video_sub.webm
    15

    View full-size slide

  16. DebCon 23 英語,日本語字幕ファイ

    https://gitlab.com/matoken/debconf23_stt
    16

    View full-size slide

  17. ライブ文字起こし,翻訳
    Whisper.cpp ( make stream )でstreaming文字起こし
    Intel Core i5-7300U では最小の tiny モデルでも処理が間に合わ
    ない
    もっと強いマシンが必要
    💪
    🖥
    ( or ☁ )
    $ ./stream --language ja -m models/ggml-tiny.bin
    :
    main: WARNING: cannot process audio fast enough, dropping audio ...
    17

    View full-size slide

  18. 英語音声をリアルタイム文字起
    こししつつ,transrate-shell で日本語
    に翻訳
    $ ./stream -t 4 --language en -m models/ggml-tiny.bin | pee cat "trans :ja -b"
    :
    Thanks for the main menu and the me use this for points for sure.
    メインメニューに感謝します。私はこれをポイントとして使用しています。
    the fights are hot and we hope that we will be able to provide all the amenities that we
    戦いは熱いので、私たちが提供できるすべてのアメニティを提供できることを願っています
    I don't know if I can take the phone to the phone I don't know if I can take the phone to the
    電話を電話に持っていけるかどうかわからない 電話を電話に持っていけるかどうかわからない
    I want to be a Nielsen, you all are even happy to be here. Yeah, be a Nielsen. Yeah, be a Nie
    私はニールセンになりたいです。皆さんもここにいられて幸せです。ええ、ニールセンになりましょう。ええ、ニールセンに
    ^C
    18

    View full-size slide

  19. 動画内の文字をOCR
    tesseract-ocr( ) を使った
    scritpをショートカット呼び出し,任意の範囲を選択,OCR
    1 任意の場所をマウスで領域選択
    2 画像拡大
    3 OCR処理,結果はprimaryへ
    4 処理終了をデスクトップ通知
    https://tesseract-ocr.github.io/
    #!/bin/bash
    IMAGEFILE=$(mktemp)
    import png:"${IMAGEFILE}"
    convert "${IMAGEFILE}" -resize 500% "${IMAGEFILE}"
    tesseract "${IMAGEFILE}" - -l jpn+eng --psm 1 | xsel
    notify-send 'ocr
    📋️
    (primary)'
    rm ${IMAGEFILE}
    1
    2
    3
    4
    19

    View full-size slide


  20. OCRで画像文字を文字データに
    https://speakerdeck.com/matoken/ocrdehua-
    xiang-wen-zi-wo-wen-zi-detani
    https://gitlab.com/matoken/kagolug-
    2022.05/-/blob/main/slide/ocr.adoc
    20

    View full-size slide

  21. まとめ
    Youtube やOSS で英語などの自分のわからない言語の動画を日
    本語に翻訳
    設定が済めばoffline でもOK
    OSS でも思ったより精度がいいのでお勧め
    (しかし翻訳したことに満足してあまり見れていない……)
    21

    View full-size slide

  22. 奥付
    発表
    2023-11-
    11(sat)
    発表者
    利用ソフトウェア
    ライセンス
    小江戸らぐ 11月のオフな集まり(第256回)
    Kenichiro Matohara(matoken)
    Asciidoctor Reveal.js
    CC BY 4.0
    22

    View full-size slide