Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

詳細は過去の発表を 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

Slide 11

Slide 11 text

動画の入手 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

Slide 12

Slide 12 text

文字起こしのために動画を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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

DebCon 23 英語,日本語字幕ファイ ル https://gitlab.com/matoken/debconf23_stt 16

Slide 17

Slide 17 text

ライブ文字起こし,翻訳 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

Slide 18

Slide 18 text

英語音声をリアルタイム文字起 こししつつ,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

Slide 19

Slide 19 text

動画内の文字を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

Slide 20

Slide 20 text

 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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

No content