help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
speech-recognition
/
notebooks
RSK World
speech-recognition
Speech Recognition Dataset - Audio AI + Speech-to-Text + Voice Recognition
notebooks
  • exploration.ipynb13.5 KB
exploration.ipynb
notebooks/exploration.ipynb
Raw Download
Find: Go to:
{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Speech Recognition Dataset - Data Exploration\n",
        "\n",
        "<!--\n",
        "============================================================================\n",
        "Speech Recognition Dataset - Jupyter Notebook\n",
        "============================================================================\n",
        "\n",
        "Project: Speech Recognition Dataset\n",
        "Description: Audio speech recognition dataset with labeled speech samples \n",
        "             for training speech-to-text and voice recognition models.\n",
        "\n",
        "============================================================================\n",
        "DEVELOPER INFORMATION\n",
        "============================================================================\n",
        "Website: https://rskworld.in\n",
        "Founded by: Molla Samser\n",
        "Designer & Tester: Rima Khatun\n",
        "Email: help@rskworld.in\n",
        "Support: support@rskworld.in\n",
        "Phone: +91 93305 39277\n",
        "Address: Nutanhat, Mongolkote, Purba Burdwan, West Bengal, India, 713147\n",
        "\n",
        "============================================================================\n",
        "COPYRIGHT NOTICE\n",
        "============================================================================\n",
        "© 2026 RSK World. All rights reserved.\n",
        "This dataset is provided for educational and research purposes.\n",
        "\n",
        "============================================================================\n",
        "-->\n",
        "\n",
        "This notebook provides an interactive exploration of the Speech Recognition Dataset.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# Import required libraries\n",
        "import sys\n",
        "import os\n",
        "sys.path.append('../')\n",
        "\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import seaborn as sns\n",
        "import librosa\n",
        "import librosa.display\n",
        "from pathlib import Path\n",
        "import json\n",
        "\n",
        "# Set style\n",
        "plt.style.use('dark_background')\n",
        "sns.set_palette(\"husl\")\n",
        "\n",
        "print(\"Libraries imported successfully!\")\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 1. Load Dataset Metadata\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# Load metadata\n",
        "metadata_path = '../data/metadata.csv'\n",
        "metadata = pd.read_csv(metadata_path)\n",
        "\n",
        "print(f\"Total samples: {len(metadata)}\")\n",
        "print(f\"\\nDataset Info:\")\n",
        "print(metadata.info())\n",
        "print(f\"\\nFirst few rows:\")\n",
        "metadata.head()\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 2. Dataset Statistics\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# Basic statistics\n",
        "print(\"Dataset Statistics:\")\n",
        "print(f\"Total audio files: {len(metadata)}\")\n",
        "print(f\"Unique speakers: {metadata['speaker'].nunique()}\")\n",
        "print(f\"Total duration: {metadata['duration'].sum():.2f} seconds\")\n",
        "print(f\"Average duration: {metadata['duration'].mean():.2f} seconds\")\n",
        "print(f\"Min duration: {metadata['duration'].min():.2f} seconds\")\n",
        "print(f\"Max duration: {metadata['duration'].max():.2f} seconds\")\n",
        "\n",
        "if 'category' in metadata.columns:\n",
        "    print(f\"\\nCategories:\")\n",
        "    print(metadata['category'].value_counts())\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 3. Data Visualization\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# Duration distribution\n",
        "fig, axes = plt.subplots(2, 2, figsize=(15, 10))\n",
        "\n",
        "# Duration histogram\n",
        "axes[0, 0].hist(metadata['duration'], bins=30, edgecolor='white', alpha=0.7, color='#6366f1')\n",
        "axes[0, 0].set_title('Duration Distribution', fontsize=14, fontweight='bold')\n",
        "axes[0, 0].set_xlabel('Duration (seconds)')\n",
        "axes[0, 0].set_ylabel('Frequency')\n",
        "axes[0, 0].grid(True, alpha=0.3)\n",
        "\n",
        "# Speaker distribution\n",
        "speaker_counts = metadata['speaker'].value_counts().head(10)\n",
        "axes[0, 1].barh(range(len(speaker_counts)), speaker_counts.values, color='#8b5cf6')\n",
        "axes[0, 1].set_yticks(range(len(speaker_counts)))\n",
        "axes[0, 1].set_yticklabels(speaker_counts.index)\n",
        "axes[0, 1].set_title('Top 10 Speakers', fontsize=14, fontweight='bold')\n",
        "axes[0, 1].set_xlabel('Number of Samples')\n",
        "axes[0, 1].grid(True, alpha=0.3)\n",
        "\n",
        "# Category distribution (if available)\n",
        "if 'category' in metadata.columns:\n",
        "    category_counts = metadata['category'].value_counts()\n",
        "    colors = ['#6366f1', '#8b5cf6', '#ec4899', '#10b981', '#f59e0b']\n",
        "    axes[1, 0].pie(category_counts.values, labels=category_counts.index, \n",
        "                   autopct='%1.1f%%', startangle=90, colors=colors[:len(category_counts)])\n",
        "    axes[1, 0].set_title('Category Distribution', fontsize=14, fontweight='bold')\n",
        "\n",
        "# Duration by speaker\n",
        "if 'speaker' in metadata.columns:\n",
        "    speaker_durations = metadata.groupby('speaker')['duration'].sum().head(10)\n",
        "    axes[1, 1].bar(range(len(speaker_durations)), speaker_durations.values, color='#ec4899')\n",
        "    axes[1, 1].set_xticks(range(len(speaker_durations)))\n",
        "    axes[1, 1].set_xticklabels(speaker_durations.index, rotation=45, ha='right')\n",
        "    axes[1, 1].set_title('Total Duration by Speaker', fontsize=14, fontweight='bold')\n",
        "    axes[1, 1].set_ylabel('Total Duration (seconds)')\n",
        "    axes[1, 1].grid(True, alpha=0.3, axis='y')\n",
        "\n",
        "plt.tight_layout()\n",
        "plt.show()\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 4. Audio Feature Analysis\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# Load a sample audio file for analysis\n",
        "sample_id = 1\n",
        "sample_row = metadata[metadata['id'] == sample_id].iloc[0]\n",
        "audio_path = f\"../data/audio/{sample_row['file_name']}\"\n",
        "\n",
        "if os.path.exists(audio_path):\n",
        "    # Load audio\n",
        "    y, sr = librosa.load(audio_path, sr=16000)\n",
        "    \n",
        "    print(f\"Audio File: {sample_row['file_name']}\")\n",
        "    print(f\"Speaker: {sample_row['speaker']}\")\n",
        "    print(f\"Duration: {sample_row['duration']:.2f} seconds\")\n",
        "    print(f\"Transcript: {sample_row['transcript']}\")\n",
        "    print(f\"\\nAudio Info:\")\n",
        "    print(f\"  Sample rate: {sr} Hz\")\n",
        "    print(f\"  Length: {len(y)} samples\")\n",
        "    print(f\"  Duration: {len(y)/sr:.2f} seconds\")\n",
        "    \n",
        "    # Extract features\n",
        "    mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13)\n",
        "    mel_spec = librosa.feature.melspectrogram(y=y, sr=sr)\n",
        "    mel_spec_db = librosa.power_to_db(mel_spec, ref=np.max)\n",
        "    chroma = librosa.feature.chroma_stft(y=y, sr=sr)\n",
        "    \n",
        "    # Visualize\n",
        "    fig, axes = plt.subplots(4, 1, figsize=(15, 12))\n",
        "    \n",
        "    # Waveform\n",
        "    librosa.display.waveshow(y, sr=sr, ax=axes[0], color='#6366f1')\n",
        "    axes[0].set_title('Waveform', fontsize=14, fontweight='bold')\n",
        "    axes[0].set_xlabel('Time (s)')\n",
        "    axes[0].set_ylabel('Amplitude')\n",
        "    \n",
        "    # Mel Spectrogram\n",
        "    img = librosa.display.specshow(mel_spec_db, x_axis='time', y_axis='mel', sr=sr, ax=axes[1])\n",
        "    axes[1].set_title('Mel Spectrogram', fontsize=14, fontweight='bold')\n",
        "    fig.colorbar(img, ax=axes[1], format='%+2.0f dB')\n",
        "    \n",
        "    # MFCC\n",
        "    img = librosa.display.specshow(mfcc, x_axis='time', ax=axes[2])\n",
        "    axes[2].set_title('MFCC Features', fontsize=14, fontweight='bold')\n",
        "    axes[2].set_ylabel('MFCC Coefficient')\n",
        "    fig.colorbar(img, ax=axes[2])\n",
        "    \n",
        "    # Chroma\n",
        "    img = librosa.display.specshow(chroma, x_axis='time', y_axis='chroma', ax=axes[3])\n",
        "    axes[3].set_title('Chroma Features', fontsize=14, fontweight='bold')\n",
        "    fig.colorbar(img, ax=axes[3])\n",
        "    \n",
        "    plt.tight_layout()\n",
        "    plt.show()\n",
        "    \n",
        "    print(f\"\\nFeature Shapes:\")\n",
        "    print(f\"  MFCC: {mfcc.shape}\")\n",
        "    print(f\"  Mel Spectrogram: {mel_spec_db.shape}\")\n",
        "    print(f\"  Chroma: {chroma.shape}\")\n",
        "else:\n",
        "    print(f\"Audio file not found: {audio_path}\")\n",
        "    print(\"Please add audio files to the data/audio directory.\")\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 5. Transcript Analysis\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# Word frequency analysis\n",
        "from collections import Counter\n",
        "\n",
        "all_words = []\n",
        "for transcript in metadata['transcript']:\n",
        "    words = str(transcript).lower().replace('?', '').replace('!', '').replace(',', '').replace('\"', '').split()\n",
        "    all_words.extend(words)\n",
        "\n",
        "word_freq = Counter(all_words)\n",
        "\n",
        "# Plot top words\n",
        "fig, axes = plt.subplots(1, 2, figsize=(15, 6))\n",
        "\n",
        "# Bar chart\n",
        "top_words = word_freq.most_common(15)\n",
        "words, counts = zip(*top_words)\n",
        "axes[0].barh(range(len(words)), counts, color='#6366f1')\n",
        "axes[0].set_yticks(range(len(words)))\n",
        "axes[0].set_yticklabels(words)\n",
        "axes[0].set_xlabel('Frequency')\n",
        "axes[0].set_title('Top 15 Most Frequent Words', fontsize=14, fontweight='bold')\n",
        "axes[0].invert_yaxis()\n",
        "axes[0].grid(True, alpha=0.3, axis='x')\n",
        "\n",
        "# Word length distribution\n",
        "word_lengths = [len(word) for word in all_words]\n",
        "axes[1].hist(word_lengths, bins=15, edgecolor='white', alpha=0.7, color='#8b5cf6')\n",
        "axes[1].set_xlabel('Word Length')\n",
        "axes[1].set_ylabel('Frequency')\n",
        "axes[1].set_title('Word Length Distribution', fontsize=14, fontweight='bold')\n",
        "axes[1].grid(True, alpha=0.3)\n",
        "\n",
        "plt.tight_layout()\n",
        "plt.show()\n",
        "\n",
        "print(f\"\\nTranscript Statistics:\")\n",
        "print(f\"  Total unique words: {len(word_freq)}\")\n",
        "print(f\"  Total words: {sum(word_freq.values())}\")\n",
        "print(f\"  Average word length: {np.mean(word_lengths):.2f} characters\")\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 6. Dataset Summary\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "print(\"=\" * 60)\n",
        "print(\"SPEECH RECOGNITION DATASET - SUMMARY\")\n",
        "print(\"=\" * 60)\n",
        "print(f\"\\nTotal Samples: {len(metadata)}\")\n",
        "print(f\"Unique Speakers: {metadata['speaker'].nunique()}\")\n",
        "print(f\"Total Duration: {metadata['duration'].sum():.2f} seconds ({metadata['duration'].sum()/3600:.2f} hours)\")\n",
        "print(f\"Average Duration: {metadata['duration'].mean():.2f} seconds\")\n",
        "print(f\"Min Duration: {metadata['duration'].min():.2f} seconds\")\n",
        "print(f\"Max Duration: {metadata['duration'].max():.2f} seconds\")\n",
        "\n",
        "if 'category' in metadata.columns:\n",
        "    print(f\"\\nCategories:\")\n",
        "    for cat, count in metadata['category'].value_counts().items():\n",
        "        print(f\"  {cat}: {count} samples ({count/len(metadata)*100:.1f}%)\")\n",
        "\n",
        "print(\"\\n\" + \"=\" * 60)\n",
        "print(\"Dataset provided by RSK World\")\n",
        "print(\"Website: https://rskworld.in\")\n",
        "print(\"Founded by: Molla Samser\")\n",
        "print(\"Designer & Tester: Rima Khatun\")\n",
        "print(\"© 2026 RSK World. All rights reserved.\")\n",
        "print(\"=\" * 60)\n"
      ]
    }
  ],
  "metadata": {
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 2
}
347 lines•13.5 KB
json

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer