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. 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
  2. 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
  3. 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
  4. Youtube に無い動画(VOD) ダウンロードして文字起こし,日本語翻訳する 文字起こしにはOpenAI のWhisper のc++ 実装の Whisper.cpp を利用( 対応GPU

    がない場合はお勧め ) 翻訳には ArgosTranslate を利用 ここでは を変換した DebConf 23 動画 https://meetings- archive.debian.net/pub/debian- meetings/2023/DebConf23/ 9
  5. 動画の入手 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
  6. 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
  7. ライブ文字起こし,翻訳 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
  8. 英語音声をリアルタイム文字起 こししつつ,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
  9. 動画内の文字を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