# **Real-Pod Dataset** ## **Overview** The **Real-Pod Dataset** is designed to: - **Provide Realistic Data**: Serve as a reference for evaluating podcast creation systems with real-world data. - **Cover Diverse Topics**: Include a wide range of podcast categories and topics to ensure the dataset reflects the variety of content available in the podcast ecosystem. - **Enable Comprehensive Evaluation**: Support the evaluation of speech/audio quality, dialogue naturalness, music and sound effect (MSE) harmony and so on.

--- ## **Table of Contents** - [**Real-Pod Dataset**](#real-pod-dataset) - [**Overview**](#overview) - [**Table of Contents**](#table-of-contents) - [Todo List](#todo-list) - [**Dataset Creation Process**](#dataset-creation-process) - [**1. Podcast Category**](#1-podcast-category) - [**2. Podcast Topics**](#2-podcast-topics) - [**3. Podcast Episode**](#3-podcast-episode) - [**Metadata**](#metadata) - [**Usage Guidelines**](#usage-guidelines) - [**Environment**](#environment) - [**Features**](#features) - [**File Outputs**](#file-outputs) - [**Ethical Considerations**](#ethical-considerations) - [**Citation**](#citation) --- ## Todo List - [x] Add music separation control option - [x] Add dynamic duration adjustment for dialogue selection --- ## **Dataset Creation Process** To ensure the dataset is both diverse and representative of real-world podcasts, we followed a systematic approach to curate topics, select podcast episodes, and provide relevant metadata and processing tool. ### **1. Podcast Category** We began by compiling a comprehensive list of podcast categories based on the taxonomy provided by `Apple Podcast` application. These 17 categories include: - **Society & Culture** - **Education** - **Business** - **Comedy** - **Science & Technology** - **Health & Fitness** - **Arts** - **News** - **Sports** - **History** - **Kids & Family** - **True Crime** - **TV & Film** - **Music** - **Leisure** - **Fiction** - **Mental Health** This list ensures broad coverage of podcast genres, reflecting the diversity of podcast content. --- ### **2. Podcast Topics** To set up relevant and representative topics for each category: 1. **Initial Topic Suggestions**: - We used GPT-4 to generate **5 popular and distinct topics** per category. These topics reflected current trends and listener interests. 2. **Human Review and Refinement**: - Human annotators reviewed and refined the generated topics to ensure relevance, uniqueness, and alignment with real-world podcast themes. - **3 representative topics** were selected for each category, resulting in a final collection of 51 topics (17 categories × 3 topics). --- ### **3. Podcast Episode** Once the topic collection was finalized, we manually searched and screened podcast episodes to identify those most relevant to the given topics. The selection process followed these principles: **Selection Criteria** 1. **Topic Relevance**: - Episodes were chosen based on how well they align with the predefined topics. 2. **Multi-Speaker Dialogue**: - Preference was given to episodes featuring multiple speakers to facilitate evaluation of speaker diarization, dialogue segmentation, and related tasks. 3. **High Audio Quality**: - Episodes with clear and high-quality audio were prioritized to serve as benchmarks for audio quality. 4. **Diverse Audio Scenarios**: - Without Background Music: Episodes containing pure dialogue were included for evaluating speech clarity and voice quality. - With Background Music: Episodes with background music or sound effects were included to analyze the appropriateness and integration of such elements in podcast production. --- ### **Metadata** The dataset includes a JSON file (`Podcast_51topics.json`) containing metadata for each podcast episode: - **topic_id**: A unified topic id. - **topic**: The specific topic (e.g., Online learning). - **category**: The podcast category (e.g., Education, Comedy). - **episode_link**: The publicly available URL where the episode can be accessed. - **episode_title**: The title of the real podcast episode. --- ## **Usage Guidelines** The dataset includes a processing tool (`data_process.py`) designed for downloading the curated real-world podcast dataset and preparing it for subsequent evaluation tasks. The pipeline can also be applied to data from podcast generation systems to be evaluated. --- ### **Environment** See PodEval/README.md --- ### **Features** #### **Command Line Arguments** - `--mode`: Operation mode (`download`, `transcribe`, `dialog`, `summarize`, `full_process`) - `--input`: Path to the input file/folder - `--output`: Path to save output files - `--min_dur`: Minimum duration of selected clips (seconds, default: 10) - `--max_dur`: Maximum duration of selected clips (seconds, default: 30) - `--num_dialogues`: Number of dialogues to select (default: 2) - `--segment_duration`: Duration of each segment in seconds (default: 60) - `--with_music`: Whether to separate music in the audio (optional) - `--clear`: Remove intermediate files after processing (optional) #### **1. Download Audio** Download Real-Pod dataset (real-world podcast audio files) from the provided JSON file. ```bash python data_process.py --mode download --input Podcast_51topics.json --output ./output ``` #### **2. Full Processing Pipeline** - Do `Dialogue Extraction` and `Audio Summarization` for given dataset. ```bash python data_process.py --mode full_process --input ./example/dataset --output ./example/processed --min_dur 10 --max_dur 30 --num_dialogues 2 --segment_duration 60 --with_music --clear ``` #### **3. Single Function Processing** - **Transcription and Speaker Diarization:** Transcribes the audio into text using the Whisper modeland Performs speaker diarization to associate text segments with speakers using Pyannote. ```bash python data_process.py --mode transcribe --input ./example/dataset --output ./example/processed --with_music ``` #### - **Dialogue Extraction:** Extract alternating dialogue segments with intelligent duration adjustment. ```bash python data_process.py --mode dialog --input ./example/dataset --output ./example/processed --min_dur 10 --max_dur 30 --num_dialogues 2 --with_music ``` - **Audio Summarization:** Extract and merge three segments (start, middle, end) with high-quality beep sounds. ```bash python data_process.py --mode summarize --input ./example/dataset --output ./example/processed/summary --segment_duration 60 ``` --- ### **File Outputs** The processing pipeline generates various output files depending on the selected mode: #### **Download** - **Downloaded Files**: `.wav` files saved in the specified output directory. #### **Transcription** - **Vocals File**: `vocals.wav` - Separated vocals (if `--with_music` is used) or original audio - **Diarized Transcription**: `diarized_transcription.txt` - Text with timestamps and speaker labels #### **Dialogue Extraction** - **Dialogue Clips**: `Clips_turns/` directory containing: - Extracted `.wav` files for alternating dialogues - `clips_info.json` - Metadata for all extracted clips - **Selected Clips**: `Clips_turns_selected/` directory containing: - Selected dialogue clips based on duration criteria - `clips_info.json` - Metadata for selected clips only #### **Summarization** - **Summarized Audio**: `.wav` files with start, middle, and end segments merged with beep sounds #### **Full Processing Mode** - **Complete Output**: All above outputs organized in subdirectories by audio file name - **Summary Files**: `summary.wav` for each processed audio file - **Optional Cleanup**: Intermediate files removed if `--clear` is specified - **Output Structure Example** ``` output_dir/ ├── audio_file_1/ │ ├── vocals.wav │ ├── diarized_transcription.txt │ ├── summary.wav │ ├── Clips_turns/ │ │ ├── dialog_1_speaker1-speaker2_10.5-25.3.wav │ │ └── clips_info.json │ └── Clips_turns_selected/ │ ├── dialog_1_speaker1-speaker2_10.5-25.3.wav │ └── clips_info.json └── audio_file_2/ └── ... ``` --- ## **Ethical Considerations** **Responsible Use**: Users are encouraged to respect copyright laws and use the dataset for research and educational purposes only. --- ## **Citation** If you use the Real-Pod dataset, please cite this project: ``` @dataset{PodEval, } ```