espnet/yodasの音声データをmp3に変換してローカルに保存する

開発環境

  • Ubunts 22.02

ライブラリのインストール

pip install pydub
sudo apt-get install ffmpeg
pip install librosa soundfile

mp3に変換・保存

以下で.arrowで保存されているデータをmp3に変換して、保存します

import os
from datasets import load_dataset
from pydub import AudioSegment
import numpy as np

# データセットのロード
ds = load_dataset('espnet/yodas', 'ja000', trust_remote_code=True)

# 保存先のフォルダを指定
output_folder = "audio"

# 保存先のフォルダが存在しない場合は作成
os.makedirs(output_folder, exist_ok=True)

# データセットの音声データをmp3に変換して保存
for i, audio_data in enumerate(ds['train']):
    # 音声データを取得
    audio = audio_data['audio']
    
    # 音声データをバイト列に変換
    audio_bytes = audio['array'].tobytes()
    
    # AudioSegmentを使用して音声データを作成
    audio_segment = AudioSegment(
        data=audio_bytes,
        sample_width=2,  # 16-bit audio
        frame_rate=audio['sampling_rate'],
        channels=1  # Mono audio
    )
    
    # ファイル名を生成
    filename = f"{audio_data['utt_id']}.mp3"
    
    # 音声データをmp3形式で保存
    audio_segment.export(os.path.join(output_folder, filename), format="mp3")
    
    print("convert audio to mp3:",filename)

print("音声データの変換と保存が完了しました。")