Slide 1

Slide 1 text

色々聞く 色々聞く Kenichiro Matohara(matoken) 1 / 47

Slide 2

Slide 2 text

南隅から参加(鹿児島の右下) 好きなLinuxディストリビューションはDebian お仕事募集 mailto:work@matohara.org Kenichiro Matohara(matoken) Kenichiro Matohara(matoken) https://matoken.org https://matoken.org ©OpenStreetMap協力者 + overpass turbo 2 / 47

Slide 3

Slide 3 text

最近 最近 ThinkPad Yoga-260の調子が悪く Terminalをmltermに移行中 鹿児島らぐ 2022.03 参加者10人,発表3人 次回は04/24(日) オンライン開催 https://kagolug.connpass.com/event/244419/ 3 / 47

Slide 4

Slide 4 text

鹿児島らぐ2022.03発表 鹿児島らぐ2022.03発表 matoken koedoyoshida「sshd DDOS対策してみた」 kapper , , , 「Torで色々🧅」 「超格安ジャンクPCでXubuntu22.04にAnboxを入れ てX11指定すると爆安Andorid環境とGooglePlayをLinuxで作 れてとても楽しい」 「ドン・キホーテ格安1,980圓焼き芋メーカーで 石焼き芋を作って堪能してみた」 「ジャンク2,000圓Blu-Rayプレ イヤーとジャンクWindowsタブレットとUbuntu LinuxとWineで 格安Blu-Ray端末してみた」 「100均Candoの330圓テンキーの キーバインドを改造してオリジナルキーボードを作ってみる。 Ubuntuのxevでキーコードを調べてxmodmpに書き込むだけ。簡 単。Windowsでも似たような事が出来る。」 4 / 47

Slide 5

Slide 5 text

色々聞く 色々聞く 👂 5 / 47

Slide 6

Slide 6 text

Podcast Podcast 基本的にラジオのような音声メディア 基本的に音声ファイルをダウンロードして聞くので時間や場所を選 ばず聞ける ShowNoteがあったり,文字起こしテキストがあったり,限定コン テンツがあったり Podcast AgregatorでPodcast RSS feedを購読 Spotifyなどはストリーミングで聞けて複数デバイスでも視聴一元管 理出来てお手軽に? スマートスピーカーなども対応 要回線 → 圏外で聞けない Androidアプリでは前もってダウンロ ードすることでオフラインで視聴可能だった 6 / 47

Slide 7

Slide 7 text

matoken Podcast視聴環境 matoken Podcast視聴環境 7 / 47

Slide 8

Slide 8 text

昔 昔 iTunes + iPod mini Songbird + iPod mini PCと同期するとファイル,視聴履歴が同期される アプリケーションが重かった 8 / 47

Slide 9

Slide 9 text

最近 最近 Rakiten Mini(Android) + Podcast Addict PCで聞くときにもBluetooth A2DPで音を飛ばして視聴履歴を 1つに 最新5話を保存,1.5倍速再生 podget + audacious podgetで全話保存 特定の話を聞き返したいときなどに利用 (大抵全話公開されてい るが,サーバが死んだりする……) 9 / 47

Slide 10

Slide 10 text

Songbirdは死んでいそう? Songbirdは死んでいそう? Nightingale SongbirdはLinuxサポートを打ち切られ,Nightingaleとい うプロフェクトがフォーク http://getnightingale.com/ 10 / 47

Slide 11

Slide 11 text

Podcast以外のものも聞いてみる Podcast以外のものも聞いてみる YouTube Twitter Spaceのアーカイブ 日本語文章 英語のコンテンツ 11 / 47

Slide 12

Slide 12 text

YouTubeのコンテンツを聞く YouTubeのコンテンツを聞く YouTubeでラジオ形式で配信されているコンテンツ オープンソースカンファレンス動画 他 12 / 47

Slide 13

Slide 13 text

yt-dlpでダウンロード yt-dlpでダウンロード youtube-dlのフォーク,他の派生の機能も取り込まれている. YouTube以外にもいろいろなサービスに対応 https://github.com/yt-dlp/yt-dlp 13 / 47

Slide 14

Slide 14 text

導入例 導入例 $ wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp https://github.com/yt-dlp/yt-dlp/releases/latest/download/SHA2-512SUMS $ sha512sum -c ./SHA2-512SUMS 2>&1 | grep OK yt-dlp: OK $ install -m700 ./yt-dlp ~/bin/ $ rm ./yt-dlp ./SHA2-512SUMS 14 / 47

Slide 15

Slide 15 text

YouTubeにはいくつかのメディア YouTubeにはいくつかのメディア がある がある 音声のみ ← これが欲しい ビデオのみ ビデオ+動画 15 / 47

Slide 16

Slide 16 text

ダウンロード可能なフォーマッ ダウンロード可能なフォーマッ トを確認&IDをメモ トを確認&IDをメモ $ yt-dlp -F https://www.youtube.com/watch?v=BoFSOt0mtvg [youtube] BoFSOt0mtvg: Downloading webpage [youtube] BoFSOt0mtvg: Downloading android player API JSON [info] Available formats for BoFSOt0mtvg: ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MOR ─────────────────────────────────────────────────────────────────────────────────────────────── sb2 mhtml 48x27 │ mhtml │ images st sb1 mhtml 80x45 │ mhtml │ images st sb0 mhtml 160x90 │ mhtml │ images st 139 m4a audio only │ 20.17MiB 48k https │ audio only mp4a.40.5 48k 22050Hz low 249 webm audio only │ 20.80MiB 50k https │ audio only opus 50k 48000Hz low 250 webm audio only │ 25.84MiB 62k https │ audio only opus 62k 48000Hz low 140 m4a audio only │ 53.53MiB 129k https │ audio only mp4a.40.2 129k 44100Hz med 251 webm audio only │ 48.99MiB 118k https │ audio only opus 118k 48000Hz med 17 3gp 176x144 12 │ 18.87MiB 45k https │ mp4v.20.3 45k mp4a.40.2 0k 22050Hz 14 160 mp4 256x144 24 │ 13.37MiB 32k https │ avc1.4d400c 32k video only 14 278 webm 256x144 24 │ 17.94MiB 43k https │ vp9 43k video only 14 133 mp4 426x240 24 │ 27.53MiB 66k https │ avc1.4d4015 66k video only 24 242 webm 426x240 24 │ 29.36MiB 71k https │ vp9 71k video only 24 134 mp4 640x360 24 │ 48.95MiB 118k https │ avc1.4d401e 118k video only 36 18 mp4 640x360 24 │ 88.97MiB 215k https │ avc1.42001E 215k mp4a.40.2 0k 44100Hz 36 243 webm 640x360 24 │ 56.62MiB 136k https │ vp9 136k video only 36 135 mp4 854x480 24 │ 82.40MiB 199k https │ avc1.4d401e 199k video only 48 244 webm 854x480 24 │ 76.90MiB 185k https │ vp9 185k video only 48 136 mp4 1280x720 24 │ 134.08MiB 324k https │ avc1.64001f 324k video only 72 22 mp4 1280x720 24 │ ~191.73MiB 452k https │ avc1.64001F 452k mp4a.40.2 0k 44100Hz 72 247 webm 1280x720 24 │ 143.82MiB 347k https │ vp9 347k video only 72 137 mp4 1920x1080 24 │ 201.57MiB 487k https │ avc1.640028 487k video only 10 248 webm 1920x1080 24 │ 168.30MiB 407k https │ vp9 407k video only 10 16 / 47

Slide 17

Slide 17 text

音声+サムネイルダウンロード 音声+サムネイルダウンロード 1 .m4a ダウンロード 2 サムネイル埋め込み 3 対象動画URL ファイラーでサムネイルもOK $ yt-dlp -f 140 \ --embed-thumbnail \ https://www.youtube.com/watch?v=BoFSOt0mtvg 1 2 3 17 / 47

Slide 18

Slide 18 text

YouTubeチャンネルやプレイリス YouTubeチャンネルやプレイリス トからラジオだけをダウンロー トからラジオだけをダウンロー ド ド 1 タイトルに「ラジオをする」の含まれている動画のみダウンロード 2 対象プレイリストURL $ yt-dlp -f 140 \ --embed-thumbnail \ --match-filter "title~=ラジオをする" \ https://www.youtube.com/watch?list=PLUH30mfo5wJwdafMdAJFcrcryUbYiixl4 1 2 18 / 47

Slide 19

Slide 19 text

指定期間でダウンロード 指定期間でダウンロード 最新n件,前回のダウンロード実行時以降,いつからいつまでの間…… --playlist-start NUMBER --playlist-end NUMBER --playlist-items ITEM_SPEC --date DATE --datebefore DATE --dateafter DATE --match-filter FILTER 19 / 47

Slide 20

Slide 20 text

視聴履歴に残す 視聴履歴に残す --cookies-from-browser BROWSER[+KEYRING][:PROFILE] YouTubeログイン済のブラウザ( brave, chrome, chromium, edge, firefox, opera, safari, vivaldi)から cookieを取得 --cookies FILE ブラウザからYouTubeのcookieを書き出したファイル指定, cookie書き出しには拡張機能のcookies.txt利用 リモートで利用時に便利 cookies.txt – Get this Extension for <9F> <8A> Firefox (en-US) 20 / 47

Slide 21

Slide 21 text

その他よく使うオプション その他よく使うオプション -i ダウンロード失敗しても次の動画を処理する -f 保存ファイル名指定 -P ダウンロードテンポラリパス(exFATおすすめ) -s, --simulate ダウンロードをしない,ドライラン 他にも大量にオプションがあるので yt-dlp -h をチェック 21 / 47

Slide 22

Slide 22 text

Twitter Spaceのアーカイブをダウ Twitter Spaceのアーカイブをダウ ンロードして聞く ンロードして聞く Twitterの音声配信サービス 配信者がアーカイブを残す設定にしていれば一定期間(30日?)アーカ イブを聞くことができる Python製のTwspace-dlを利用してダウンロード 導入例 HoloArchivists/twspace-dl: A python module to download twitter spaces. $ pip install twspace-dl 22 / 47

Slide 23

Slide 23 text

Twitter Spaceアーカイブダウンロ Twitter Spaceアーカイブダウンロ ード ード $ twspace_dl -i https://twitter.com/i/spaces/1ypKdEXLdLqGW : $ ffprobe -i ./\(辻\ 伸弘\ \(nobuhiro\ tsuji\)\)ゆくアレ、くるアレ\ #セキュリティのアレ-1ypKdEXLdLqGW : Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './(辻 伸弘 (nobuhiro tsuji))ゆくアレ、くるアレ #セキュリティ Metadata: major_brand : M4A minor_version : 512 compatible_brands: M4A isomiso2 title : ゆくアレ、くるアレ #セキュリティのアレ artist : 辻 伸弘 (nobuhiro tsuji) encoder : Lavf58.76.100 episode_id : 1ypKdEXLdLqGW Duration: 01:13:21.71, start: 0.000000, bitrate: 95 kb/s Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (defau Metadata: handler_name : SoundHandler vendor_id : [0][0][0][0] 23 / 47

Slide 24

Slide 24 text

無音部分をカット 無音部分をカット 1 一定以下の音の部分をカット 01:13:21.71 → 01:09:51.71 になった  ノーマライズを挟むといい かも? $ ffmpeg -i ./\(辻\ 伸弘\ \(nobuhiro\ tsuji\)\)ゆくアレ、くるアレ\ #セキュリティのアレ-1ypKdEXLdLqGW.m -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-50dB \ -acodec libopus \ ./\(辻\ 伸弘\ \(nobuhiro\ tsuji\)\)ゆくアレ、くるアレ\ #セキュリティのアレ-1ypKdEXLdLqGW.opus 1 別の動画では -90dB でうまくいった. 24 / 47

Slide 25

Slide 25 text

日本語文章を聞く 日本語文章を聞く MozillaのオンラインブックマークサービスのPocket(スマートフォン アプリのみ)の読み上げ機能 最高品質の音声(既定値)は要オンライン ディスクを大量に消費するので設定で制限 LinuxのTTSで読み上げ VOICEVOXが人間に近い&Linux版もあっていい感じ  VOICEVOX登場以前に試したときのもの ↓ Linuxで日本語の扱えるTTS(Text-to-speech)を試す 25 / 47

Slide 26

Slide 26 text

26 / 47

Slide 27

Slide 27 text

27 / 47

Slide 28

Slide 28 text

28 / 47

Slide 29

Slide 29 text

VOICEVOXで文章を音声に VOICEVOXで文章を音声に 商用・非商用問わず無料 音声ライブラリはたくさんのキャラクターが居てキャラクターにより 利用規約がある クレジットのみが多いけど要確認 GUIとENGINEのみが利用できる GUI版はENGINEとしても利用可能 ENGINEはDockerもあり GPU/CPU版とCPU版がある GPU版はRAM 3GB以上を搭載したNVIDIA GPUが必要 https://voicevox.hiroshiba.jp/ 29 / 47

Slide 30

Slide 30 text

VOICEBOX GUI版で読み上げ VOICEBOX GUI版で読み上げ $ VOICEVOX/voicevox でGUI版起動 適当なテキストファイルを用意 「ファイル」→「テキスト読み込み」 「ファイル」→「音声を繋げて書き出し」 .wavで書きだされる Intel Core i5-3320Mで大体実時間の3〜4倍くらい 30 / 47

Slide 31

Slide 31 text

31 / 47

Slide 32

Slide 32 text

VOICEVOX ENGINE利用 VOICEVOX ENGINE利用 $ VOICEVOX/run でエンジンのみ起動 http経由でやり取りして.wavを受け取れる エンジンを起動した状態で でド キュメントが確認できる http://127.0.0.1:50021/docs 32 / 47

Slide 33

Slide 33 text

README.mdにもサンプルが README.mdにもサンプルが echo -n "こんにちは、音声合成の世界へようこそ" >text.txt curl -s \ -X POST \ "localhost:50021/audio_query?speaker=1"\ --get --data-urlencode text@text.txt \ > query.json curl -s \ -H "Content-Type: application/json" \ -X POST \ -d @query.json \ localhost:50021/synthesis?speaker=1 \ > audio.wav 33 / 47

Slide 34

Slide 34 text

テキストファイルからを1行毎に テキストファイルからを1行毎に 読み出して.wavに 読み出して.wavに 1 テキストを渡すとwavを返すscript $ count=0 ; cat ./文章.txt | while read line; \ do echo ${line} ; \ ./voicevox2wav.bash ${line} > "${count}.wav" ; \ count=$(( ${count} + 1 )); done 1 34 / 47

Slide 35

Slide 35 text

.wav を結合しつつopus/oggに変換 .wav を結合しつつopus/oggに変換 大分聞きやすい2時間超のものを最後まで聞けた $ find . -name "*.wav" -size +1c | sort -V | xargs -n1 basename | xargs -n1 echo file > wav-fi $ time ffmpeg -f concat -i ./wav-files -acodec libopus episode12.ogg 35 / 47

Slide 36

Slide 36 text

英語のコンテンツを日本語で聞 英語のコンテンツを日本語で聞 きたい きたい YouTubeの自動文字起こし,機械翻訳を読み上げてみる 機械翻訳したものを読み上げてみる  Google翻訳のURLをPocketに登録は英語のまま読まれて失 敗 36 / 47

Slide 37

Slide 37 text

YouTubeの自動文字起こし,機械 YouTubeの自動文字起こし,機械 翻訳 翻訳 YouTubeにアップロードされた動画は自動的に文字起こしされ,各 種言語に翻訳されて字幕として利用できる yt-dlpで字幕ファイルをダウンロード可能 YouTubeにないものをダウンロードしてYouTubeに限定公開で Upして字幕のみDLとかも可能(データによっては警告が来るので注 意) 37 / 47

Slide 38

Slide 38 text

機械翻訳字幕ファイル入手 機械翻訳字幕ファイル入手 1 字幕ファイルのみダウンロードするために動画のダウンロードをス キップ 2 日本語の字幕のみ入手 3 字幕ファイルダウンロード $ yt-dlp --skip-download \ --sub-lang=ja \ --write-auto-sub \ https://www.youtube.com/watch?v=lZjciSImVhU 1 2 3 38 / 47

Slide 39

Slide 39 text

字幕ファイルの.vttから.txtに変換 字幕ファイルの.vttから.txtに変換 $ awk 'FNR<=4 || ($0 ~ /^$|-->|\[|\]|){next} !a[$0]++' \ ./Ep\ 12\ -\ Crypto\ Wars\ \[lZjciSImVhU\].ja.vtt > \ ./Ep\ 12\ -\ Crypto\ Wars\ \[lZjciSImVhU\].ja.txt 39 / 47

Slide 40

Slide 40 text

40 / 47

Slide 41

Slide 41 text

同様に.wavに書き出して結合し 同様に.wavに書き出して結合し て聞く て聞く 元の字幕ファイルが細切れになっているので聞きづらい テキストファイルの改行を減らすともっと良くなると思う 41 / 47

Slide 42

Slide 42 text

英語テキストを機械翻訳して読 英語テキストを機械翻訳して読 み上げして聞く み上げして聞く 今回は英語Podcastの書き起こしテキストを変換 htmlをテキストに,無駄な改行を削除 $ w3m -dump | tr -s "\n" > text TransShell経由でGoogle翻訳を使い日本語に変換 $ cat ./text | while read line; do trans -b en:ja "${line}" | tee -a text.ja; done https://darknetdiaries.com/transcript/112 42 / 47

Slide 43

Slide 43 text

 Translate ShellはGoogle翻訳,Bing翻訳,Yandex翻 訳,Apertium(DeepLはドロップ)をコマンドラインで利用 できるもの.既定値はGoogle翻訳. 翻訳読み上げを録音 する手も?(未検証) -download-audio-as FILENAME Google翻訳を使いすぎるとしばらく使えなくなる. Telegramは頑張って回避しているようなので真似すれ ば? Translate Shell How Telegram Messenger circumvents Google Translate’s API | DanPetrov 43 / 47

Slide 44

Slide 44 text

 DeepLの利用(失敗) ファイルだと5MB 10万文字までの翻訳が可能.しかし帰っ てきた文章からテキストに戻せない? $ pandoc text.en -o text_en.pdf $ : ウェブブラウザのDeepLで翻訳 $ pdf2txt 'text_ja.pdf' | head rM?= 2 DREW8»(cid:220)(cid:215)(cid:238)\(cid:231)(cid:135)[CTI8(cid:11) JACK: 88(cid:135)[M?=(cid:143)¡?]:?(cid:131)?}^8E](cid:10)^(cid:135)?.........(cid:11) DREW88x6(cid:10)Q:^(cid:135)[M|(cid:11) 44 / 47

Slide 45

Slide 45 text

出来上がった日本語テキストをVOICEVOXで読み上げ 結構普通に聞ける,英単語がアルファベットで読まれる(多分設定で回 避できる?) Podcastの書き起こしテキストは行頭に話者が書かれていたので話 者毎にVOICEVOXのキャラクターを切り替えると聞きやすくなると 思う 45 / 47

Slide 46

Slide 46 text

まとめ まとめ 音声コンテンツはながら聴きができるので便利 気になったら戻って聞き返したり何度も聞いたり オープンソースカンファレンス動画がいっぱい公開,後で見よ う……もう次のOSC!というのを繰り返してしまう.とりあえず音声 だけ聞いて気になったものを動画で見る.をできるように TTSのVOICEVOXは既定値でも結構普通に聞けていい感じ 設定を凝ればもっと流暢なものになると思うが…… YouTube以外のSpeech to Textを試したい 自分用Podcast RSS feedを書き出して自動的に同期するように もしたい 46 / 47

Slide 47

Slide 47 text

奥付 奥付 発表 発表者 利用ソフトウェア ライセンス CC BY 4.0 東海道らぐとLinuxをはじめる春まつり Kenichiro Matohara(matoken) Asciidoctor Reveal.js 47 / 47