Giter VIP home page Giter VIP logo

laughter-collector's Introduction

Laughter Collector

音声データから笑い声を抽出してデータセットを作成するためのスクリプト群です。また非言語音声や感嘆詞の抽出も可能です(が誤りが多いかもしれません)。日本語で書き起こしてそれを使って判定しているので、日本語以外の音声ではうまく動かないかもしれません

原理

  • 音声ファイルを読み込み、-40dBを無音とみなしスライス (slice.py)
  • スライスした音声データに対して、Whisperで日本語へ書き起こしを行う (laughter_collector.py内部)
  • 書き起こしデータに対して、正規表現を用いて笑い声かどうか・非言語音声や感嘆詞かどうかを判定 (pattern.py)

使い方

Python>=3.10とNVidia GPUが必要です。

インストール

git clone https://github.com/litagin02/laughter-collector
cd laughter-collector
python -m venv venv
venv\Scripts\activate
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt

元データの準備

  • 音声ファイルたちをディレクトリ(以下path/to/original_dataとする)に格納
  • 各ファイルの拡張子は".wav", ".mp3", ".flac", ".ogg", ".opus"のいずれかである必要があります(必要に応じてutils.pyを書き換えれば他もいけます)。
  • path/to/original_dataでは好きなようにサブディレクトリたちの階層を作ってそこに音声ファイルを格納してください。デフォルトでは直下の音声ファイルは反映されず、1つ下の階層からのみ反映されます。直下のみを反映するには-nrオプションを指定してください。
  • 結果は相対パスを保持したまま指定したpath/to/outputに保存されます。

データセットの作成

python collect_laughter.py -i path/to/original_data -o path/to/output

裏ではslice.pyが呼び出され、マルチプロセスで音声を切り出してpath/to/output/tempにスライスされた音声が保存されて行き、それを本体のスクリプトが順次読み込んで書き起こしをバッチ処理で行います。

細かい他の引数はコードを参照してください。

結果

元々の音声ファイルが以下のような構造だったとします。

path/to/original_data
├── subdir1
│   ├── foo.wav
│   ├── bar.mp3
│   └── baz.ogg
└── subdir2
    ├── subdir3
    │   └── qux.mp3
    └── quux.flac

結果は以下のような構造になります。

path/to/output
├── laugh
│   ├── subdir1
│   |   ├── laugh.csv
│   │   ├── foo_0.wav
│   │   ├── foo_1.wav
│   │   ├── bar_0.wav
│   │   └── baz_0.wav
│   └── subdir2
│       ├── subdir3
│       |   ├── laugh.csv
│       │   └── qux_0.wav
|       ├── laugh.csv
│       └── quux_0.wav
├── nv
│   ├── subdir1
│   |   ├── nv.csv
│   │   ├── foo_2.wav
| ...
└── trans
    ├── subdir1
    │   └── all.csv
    └── subdir2
        ├── subdir3
        │   └── all.csv
        └── all.csv

ここでfoo_0.wavfoo.wavの0番目のスライスを示しています。trans.csvは書き起こしデータです。またlaugh.csvは笑い声と判定されたスライスの書き起こし、nv.csvは非言語音声や感嘆詞と判定されたスライスの書き起こし、またall.csvはそれ以外も含めた全てのスライスの書き起こしです。

注意

  • 笑い声の判定と非言語音声の判定では笑い声が優先されます。
  • 笑い声や非言語音声の判定の正規表現は改良の余地があると思うので、必要に応じてpattern.pyを変更してください。
  • 非言語音声の判定は誤りが多く、特定のひらがなから単語ができてしまう場合それが非言語音声として判定されることがあります。結果を見ながら、そのような単語をexclude_words.txtに追加してください(毎回このファイルが参照されるので、スクリプト実行中でも変更が反映されます)。
  • スライスの細かいパラメータや、笑い声正規表現等は、それぞれsplice.pypattern.py内を参照しつつ必要ならば変更してください。
  • デフォルトでは笑い声等判定のための書き起こしにはHugging FaceのWhisperのmediumモデルが使われます(笑い声や非言語音声かどうかさえ判定できればよく書き起こし精度はそこまで必要がない)、が必要に応じてcollect_laughter.pyの引数--model large-v2等でモデルを指定できます。
  • 細かい他の引数等はコードを参照してください。

その他のスクリプト

結果の笑い声ファイルたちに対するFaster Whisper (large-v2) での書き起こし:

python transcribe.py -i path/to/output/laugh -o transcriptions.csv

laughter-collector's People

Contributors

litagin02 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.