Pythonを用いた発話分割【AIボイスチェンジャーの学習で役立つ】

Pythonを用いた発話分割【AIボイスチェンジャーの学習で役立つ】 プログラミング

「RVCやso-vits-svcの学習素材として音声を分割したい」
「朗読や演説などを機械学習の学習素材として用いたい」

このような場合には、この記事の内容が参考になります。
この記事では、Pythonを用いた発話分割について解説しています。

本記事の内容

  • 発話分割とは?
  • 発話分割のためのシステム要件
  • Pythonによる発話分割

それでは、上記に沿って解説していきます。

発話分割とは?

発話分割とは、音声を発話単位に分割することを意味します。
まあ、そのまんまですね。

発話分割は、音声データを扱う際に重要なプロセスとなります。
発話分割を行う利点には、以下があります。

  • 音声認識の精度向上
  • 音声対話システムの応答性向上
  • 音声分析の正確性向上
  • 音声データの編集や整理の効率化
  • トランスクリプションの正確性向上

迅速で正確な音声データの解析・処理には、発話分割が欠かせないということです。
そんな発話分割を行うには、次のようなアプリを利用するのもありでしょう。

  • Audiobook Cutter(デスクトップアプリケーション)
  • Audacity(オープンソースの音声編集ソフトウェア)

しかし、個人的にはPythonで行いたいです。
そちらの方が拡張性がありますからね。

あとは、Pythonは自動化なども簡単に対応できます。
そのため、この記事ではPythonを用いた発話分割を説明します。

以上、発話分割について説明しました。
次は、発話分割のためのシステム要件を説明します。

発話分割のためのシステム要件

まずは、Pythonが何よりも必要となります。
以下は、Python公式開発サイクルになります。

バージョンリリース日サポート期限
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年10月25日2027年10月

Python 3.7については、サポート対象外とするライブラリが増えてきました。
したがって、Python 3.8以降を利用するようにしましょう。

そして、発話分割に必要となるのは次のライブラリです。

  • Pydub
  • librosa

これらのインストールが必要です。
それぞれのインストール方法は、以下で解説しています。

バージョンは、現時点での最新版をインストールしましょう。

以上、発話分割のためのシステム要件を説明しました。
次は、Pythonによる発話分割を説明します。

Pythonによる発話分割

システム要件が整っていれば、次のコードを実行するだけです。
もちろん、音声ファイル(input/test.wav)と出力先のディレクトリ(output)は用意しましょう。

import librosa
from pydub import AudioSegment
from pydub.silence import split_on_silence

# 音声ファイルを読み込む
file_path = 'input/test.wav'
audio, sr = librosa.load(file_path, sr=None)

# 音声ファイルの長さを取得
duration = librosa.get_duration(y=audio, sr=sr)

# pydub用にAudioSegmentオブジェクトに変換
audio_segment = AudioSegment.from_wav(file_path)

# 音声ファイルを発話単位に分割
chunks = split_on_silence(
    audio_segment,
    min_silence_len=500,  # 無音の最小長さ(ミリ秒)
    silence_thresh=-40    # 無音と判断する音量閾値(dBFS)
)

# 分割した発話を個別のファイルに保存
for i, chunk in enumerate(chunks):
    chunk.export(f"output/speech_{i}.wav", format="wav")

処理が完了すると、出力先のディレクトリには連番でファイルが保存されています。

40分ほどの音声データ(朗読)でも、2分ほどで処理が終わっています。
マシンスペックにもよって、多少は処理時間が異なるでしょう。

ちなみに40分の音声データは、1090個のWAVファイルに分割されました。

以上、Pythonによる発話分割を説明しました。

タイトルとURLをコピーしました