質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

567閲覧

JTubeSpeechでスクリプトを実行した際の挙動がおかしい

nanashi_mob

総合スコア5

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/09/06 07:45

実現したいこと

JTubeSpeech:https://github.com/sarulab-speech/jtubespeech

音声コーパス作成のため、colabでJTubeSpeechを実行しようとしておりますが、出力されたcsvがどうもおかしくて困っています。

上記のStep3の字幕が利用可能が調べるスクリプトを実行した際、「videoid」「auto」「sub」の項目が記載されたcsvが出力されます。videoidはyoutubeの動画のid、autoは自動字幕の有無、subは人間が作成した字幕の有無を示します。
私が実行すると、この時出力されたcsvのautoとsubが全て「False」になってしまいます。念のためvideoidから該当の動画をyoutubeで調べてみたのですが、手動字幕有りの動画も「False」になっていました。
何が悪いのか自力では分からなかったので、ご助力いただければ幸いです。
よろしくお願いいたします。

前提

実行環境:Colab
JtubeSpeechのStep1のスクリプトをそのまま実行すると膨大な検索ワードになってしまうので、テキストファイルに「読み聞かせ」「絵本」といったワードを数個一行ずつ記載したものをテストに利用しております。

該当のソースコード

Python

1#JtubeSpeechをクローン 2!git clone https://github.com/sarulab-speech/jtubespeech.git

Python

1#インストールライブラリリスト 2 3text_file = open("pip_list.txt", "wt") 4 5text_file.write("espnet\n") 6text_file.write("yt-dlp\n") 7text_file.write("joblib\n") 8text_file.write("pydub\n") 9text_file.write("pandas\n") 10text_file.write("num2words\n") 11text_file.write("neologdn\n") 12text_file.write("romkan\n") 13 14text_file.write("requests\n") 15text_file.write("tqdm\n") 16 17text_file.close()

Python

1#インストール実行 2!pip3 install -r pip_list.txt

Python

1#テスト用検索ワードファイル 2 3text_file = open("test_search_word.txt", "wt") 4 5text_file.write("読み聞かせ\n") 6text_file.write("よみきかせ\n") 7text_file.write("昔話\n") 8text_file.write("昔ばなし\n") 9text_file.write("むかしばなし\n") 10text_file.write("絵本\n") 11text_file.write("えほん\n") 12 13text_file.close()

Python

1#Step2 ビデオIDの取得 2!python3 jtubespeech/scripts/obtain_video_id.py ja test_search_word.txt

Python

1#Step3 字幕が利用できるか確認 2!python3 jtubespeech/scripts/retrieve_subtitle_exists.py ja videoid/ja/test_search_word.txt

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

原因

JTubeSpeech は、字幕情報の取得に「yt-dlp」という別のパッケージを利用しています。
しかし現行バージョンの yt-dlp が出力する結果が、JTubeSpeech の想定する結果と異なっており、正常に取得できていません。

もう少し詳しく言うと、現行バージョンの yt-dlp は、一部の出力に"[info] "という文字列を付け加えています。
一方 JTubeSpeech 側は、yt-dlpが返してくるデータに"[info] "がついていないという想定で解析しています。
このため JTubeSpeech は誤って「有効なデータなし」と判断してしまいます。

対応

Google colaboの左のファイルツリーから、/content/jtubespeech/scripts/util.py を開いて、(ファイル名をダブルクリックすると右のペインにソースコードが表示されます)
その中の 114行目以降にある、「get_subtitle_language」関数を以下のように書き換えて保存ください。

py

1 2def get_subtitle_language(response_youtube): 3 lang_code = ["aa","ab","ace","ady","af","ak","als","alt","am","an","ang","ar","arc","ary","arz","as","ast","atj","av","avk","awa","ay","az","azb","ba","ban","bar","bat-smg","bcl","be","be-tarask","bg","bh","bi","bjn","bm","bn","bo","bpy","br","bs","bug","bxr","ca","cbk-zam","cdo","ce","ceb","ch","cho","chr","chy","ckb","co","cr","crh","cs","csb","cu","cv","cy","da","de","din","diq","dsb","dty","dv","dz","ee","el","eml","en","eo","es","et","eu","ext","fa","ff","fi","fiu-vro","fj","fo","fr","frp","frr","fur","fy","ga","gag","gan","gcr","gd","gl","glk","gn","gom","gor","got","gu","gv","ha","hak","haw","he","hi","hif","ho","hr","hsb","ht","hu","hy","hyw","hz","ia","id","ie","ig","ii","ik","ilo","inh","io","is","it","iu","ja","jam","jbo","jv","ka","kaa","kab","kbd","kbp","kg","ki","kj","kk","kl","km","kn","ko","koi","kr","krc","ks","ksh","ku","kv","kw","ky","la","lad","lb","lbe","lez","lfn","lg","li","lij","lld","lmo","ln","lo","lrc","lt","ltg","lv","mad","mai","map-bms","mdf","mg","mh","mhr","mi","min","mk","ml","mn","mni","mnw","mr","mrj","ms","mt","mus","mwl","my","myv","mzn","na","nah","nap","nds","nds-nl","ne","new","ng","nia","nl","nn","no","nov","nqo","nrm","nso","nv","ny","oc","olo","om","or","os","pa","pag","pam","pap","pcd","pdc","pfl","pi","pih","pl","pms","pnb","pnt","ps","pt","qu","rm","rmy","rn","ro","roa-rup","roa-tara","ru","rue","rw","sa","sah","sat","sc","scn","sco","sd","se","sg","sh","shn","si","simple","sk","skr","sl","sm","smn","sn","so","sq","sr","srn","ss","st","stq","su","sv","sw","szl","szy","ta","tay","tcy","te","tet","tg","th","ti","tk","tl","tn","to","tpi","tr","trv","ts","tt","tum","tw","ty","tyv","udm","ug","uk","ur","uz","ve","vec","vep","vi","vls","vo","wa","war","wo","wuu","xal","xh","xmf","yi","yo","za","zea","zh","zh-classical","zh-min-nan", 4 "zh-yue","zu"] 5 6 sub_type = None 7 subtitle = {"auto": [], "sub": []} 8 for r in response_youtube.split("\n"): 9 if r.startswith("[info] Available automatic captions for"): 10 sub_type = "auto" 11 elif r.startswith("[info] Available subtitles for"): 12 sub_type = "sub" 13 elif sub_type is not None: 14 lang = r.split(" ")[0].lower() 15 if lang in lang_code: 16 subtitle[sub_type].append(lang) 17 18 return subtitle["auto"], subtitle["sub"]

書き換えている部分は、

py

1 if r.startswith("Available automatic captions for"): 2  ↓ 3 if r.startswith("[info] Available automatic captions for"):

py

1 elif r.startswith("Available subtitles for"): 2  ↓ 3 elif r.startswith("[info] Available subtitles for"):

の2行です。

投稿2023/09/06 11:09

編集2023/09/06 11:23
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanashi_mob

2023/09/07 07:16

ご回答ありがとうございます! アドバイス頂いた通りにソースコードを修正したところ、ばっちり動きました! 私一人では絶対に分からなかったので、本当に助かりました。 重ね重ね感謝申し上げます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問