3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自然言語処理用学習データを動画内から収集したかった...

Last updated at Posted at 2021-04-15

目的

動画内からセリフのみを抽出して文字起こしをする。

実行環境

Windows10 Home
Python3.7

使用したライブラリなど

youtube-dl
speech_recognition
spleeter 2.1.2
FFmpeg

実行する順番

  1. 諸々のインストール
  2. 目的の動画取得
  3. 動画内の音声抽出
  4. 文字起こし

1. 諸々のインストール

⚠️ Pythonの環境が一通り整っている事を想定しております。ごめんなさい。
今回はpipを使用して色々インストールさせて頂きます。

youtube-dl のインストール

youtubeに限らずダウンロードする時に便利なのです!

pip install youtube_dl

speech_recognition のインストール

音声認識をする時などにお世話になっております。

pip install SpeechRecognition


↓ Pyaudioも欲しい ↓
pip install pyaudio

インストール確認のために以下のコマンドを実行!!!

python -m speech_recognition

何か言って! と言われるので 英語 で話してみると...

image

認識結果が表示されるようであれば完了です!!!

spleeter のインストール

ボーカルやらドラムやらベースやら音声を分離できます!!!

pip install spleeter

インストールできたか確認します!

spleeter --help

以下のような文やhelpが出たら完了です!!!

Usage: spleeter [OPTIONS] COMMAND [ARGS]...

FFmpeg のインストール

音声や動画を扱うときによく見かけます

FFmpegのサイトをスクロールして release のLinksから自分に合ったものを選んでDLしてください!

image

DC の直下にreleaseフォルダを作ると後々楽です。

※ システム環境変数にPathを通してほしいです!!!

2. 動画の取得

youtube-dlで動画を取得してみましょう!

youtube-dl (DLする動画のURL) -x -f "bestaudio" --audio-format wav --audio-quality 0

これを実行するとwav形式で高音質downloadをしてくれます。

オプションの説明

  • -x or --extract-audio → 音声のみダウンロード

  • -f or --format ”piyopiyo” → ファイル形式を指定できますくわしくはこちら

  • --audio-format → downloadフォーマットを指定してます

  • --audio-quality → 音質を指定できます(0~9 小さいほど高音質)

他にも色々あるみたいです。

3. 動画内の音声抽出

spleeterを使って動画内の音声を抽出します!
抽出というよりは分割なんですけどね。

spleeter separate (分割したいファイルへのPath) -o (出力先のPath) -p spleeter:2stems

これを実行すると音声がvocalとaccompanimentに分割されます!
初回実行のみ、自動でdownloadするものがあるので少し時間がかかります。

オプションの説明

  • -o (出力先のPath) → 出力先のフォルダを指定してください

  • -p spleeter: n stems → ( n = 2 , 4 , 5 ) で分割されます

    • 2stems → vocal / accompaniment
    • 4stems → vocal / bass / drum / other
    • 5stems → vocal / bass / piano / drum / other

※ 分割元動画が長すぎると途中で処理が落ちる場合があります!!!

4. 文字起こし

speech_recognitionを使って実際に文字起こしをしてみます

Python
import speech_recognition as sr
AUDIO_FILE = "   " #ここに抽出した音声ファイルのPathを

r = sr.Recognizer()
with sr.AudioFile(AUDIO_FILE) as source:
    audio = r.record(source)
print('音声データの文字起こし結果:\n\n', r.recognize_google(audio, language='ja'))

すると...

image

結果 まとめ

一応目的としていた、動画からセリフのみを抽出して文字起こしをすることはできた。
しかし、文字起こし結果は扱えるようなものではなかった...
結局人力で書き起こすことにした。
人力最強!人力最強!

何か良い方法ご存じでしたら是非教えてほしいです。m(_ _)m

最後に

今回初めてQiitaに記事を投稿しました。
至らない点ばかりではありますが、目に留めていただきありがとうございました。

参考

youtube-dl
https://github.com/ytdl-org/youtube-dl/blob/master/README.md#readme
speech_recognition
https://pypi.org/project/SpeechRecognition/
spleeter
https://github.com/deezer/spleeter
FFmpeg
https://rikoubou.hatenablog.com/entry/2019/11/07/144533

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?