← Back to Skills Marketplace
scikkk

Audio Quality Checker

by scikkk · GitHub ↗ · v1.0.2 · MIT-0
cross-platform ✓ Security Clean
285
Downloads
0
Stars
0
Active Installs
2
Versions
Install in OpenClaw
/install audio-quality-checker
Description
Analyze audio quality, detect noise types, and provide improvement recommendations. Use when users need to check audio quality, validate recordings, or ident...
README (SKILL.md)

SenseAudio Audio Quality Checker

Analyze audio files to detect quality issues, identify noise types, and provide improvement recommendations.

What This Skill Does

  • Detect noise and quality issues in audio files
  • Identify specific noise types (background noise, hum, static, etc.)
  • Provide noise severity ratings
  • Generate quality assessment reports
  • Recommend improvements for audio quality

Prerequisites

Install required Python packages:

pip install requests

Implementation Guide

Step 1: Analyze Audio File

import os
import requests

API_KEY = os.environ["SENSEAUDIO_API_KEY"]

def check_audio_quality(audio_file):
    url = "https://api.senseaudio.cn/v1/audio/analysis"

    headers = {"Authorization": f"Bearer {API_KEY}"}
    files = {"file": open(audio_file, "rb")}
    data = {"model": "sense-asr-check"}

    response = requests.post(url, headers=headers, files=files, data=data)
    return response.json()

# Example response:
# {
#   "audio_info": {
#     "duration": 5230,
#     "format": "wav"
#   },
#   "result": {
#     "has_noise": true,
#     "noise_score": 0.65,
#     "severity": "moderate",
#     "noise_types": ["background_noise", "hum"],
#     "analysis": "Audio contains moderate background noise and electrical hum"
#   }
# }

Step 2: Parse Quality Report

def parse_quality_report(analysis_result):
    audio_info = analysis_result.get("audio_info", {})
    result = analysis_result.get("result", {})

    report = {
        "duration_ms": audio_info.get("duration"),
        "format": audio_info.get("format"),
        "has_issues": result.get("has_noise", False),
        "noise_score": result.get("noise_score", 0),
        "severity": result.get("severity", "none"),
        "noise_types": result.get("noise_types", []),
        "analysis": result.get("analysis", ""),
        "recommendations": generate_recommendations(result)
    }

    return report

Step 3: Generate Recommendations

def generate_recommendations(quality_result):
    recommendations = []

    noise_score = quality_result.get("noise_score", 0)
    noise_types = quality_result.get("noise_types", [])
    severity = quality_result.get("severity", "none")

    # General recommendations based on severity
    if severity == "severe":
        recommendations.append("Re-record audio in a quieter environment")
        recommendations.append("Use professional audio equipment")
    elif severity == "moderate":
        recommendations.append("Apply noise reduction in post-processing")
        recommendations.append("Consider using a better microphone")
    elif severity == "mild":
        recommendations.append("Minor noise reduction may improve quality")

    # Specific recommendations based on noise types
    if "background_noise" in noise_types:
        recommendations.append("Record in a quieter location")
        recommendations.append("Use acoustic treatment (foam panels, curtains)")

    if "hum" in noise_types:
        recommendations.append("Check for electrical interference")
        recommendations.append("Use balanced audio cables")
        recommendations.append("Ensure proper grounding of equipment")

    if "static" in noise_types:
        recommendations.append("Check cable connections")
        recommendations.append("Replace faulty cables or equipment")

    if "wind_noise" in noise_types:
        recommendations.append("Use a windscreen or pop filter")
        recommendations.append("Record indoors or in sheltered location")

    if "echo" in noise_types:
        recommendations.append("Add acoustic treatment to reduce reflections")
        recommendations.append("Record closer to microphone")

    return recommendations

Step 4: Batch Quality Check

def batch_quality_check(audio_files):
    results = []

    for audio_file in audio_files:
        try:
            analysis = check_audio_quality(audio_file)
            report = parse_quality_report(analysis)

            results.append({
                "file": audio_file,
                "status": "analyzed",
                "report": report
            })
        except Exception as e:
            results.append({
                "file": audio_file,
                "status": "error",
                "error": str(e)
            })

    return results

Advanced Features

Quality Scoring System

def calculate_quality_score(analysis_result):
    """Calculate overall quality score (0-100)"""
    noise_score = analysis_result.get("noise_score", 0)
    severity = analysis_result.get("severity", "none")

    # Base score
    base_score = 100

    # Deduct based on noise score
    noise_penalty = noise_score * 50  # Max 50 points

    # Additional penalty for severity
    severity_penalties = {
        "none": 0,
        "mild": 10,
        "moderate": 25,
        "severe": 40
    }
    severity_penalty = severity_penalties.get(severity, 0)

    final_score = max(0, base_score - noise_penalty - severity_penalty)

    return {
        "score": round(final_score, 1),
        "grade": get_quality_grade(final_score)
    }

def get_quality_grade(score):
    if score >= 90:
        return "Excellent"
    elif score >= 75:
        return "Good"
    elif score >= 60:
        return "Fair"
    elif score >= 40:
        return "Poor"
    else:
        return "Unacceptable"

Comparative Analysis

def compare_audio_quality(original_file, processed_file):
    """Compare quality before and after processing"""

    original_analysis = check_audio_quality(original_file)
    processed_analysis = check_audio_quality(processed_file)

    original_score = calculate_quality_score(original_analysis["result"])
    processed_score = calculate_quality_score(processed_analysis["result"])

    comparison = {
        "original": {
            "file": original_file,
            "score": original_score,
            "noise_score": original_analysis["result"]["noise_score"]
        },
        "processed": {
            "file": processed_file,
            "score": processed_score,
            "noise_score": processed_analysis["result"]["noise_score"]
        },
        "improvement": {
            "score_delta": processed_score["score"] - original_score["score"],
            "noise_reduction": original_analysis["result"]["noise_score"] - processed_analysis["result"]["noise_score"]
        }
    }

    return comparison

Automated Quality Gate

def quality_gate_check(audio_file, min_score=70):
    """Check if audio meets minimum quality threshold"""

    analysis = check_audio_quality(audio_file)
    quality = calculate_quality_score(analysis["result"])

    passed = quality["score"] >= min_score

    return {
        "passed": passed,
        "score": quality["score"],
        "grade": quality["grade"],
        "threshold": min_score,
        "analysis": analysis
    }

Detailed Report Generation

def generate_detailed_report(audio_file):
    """Generate comprehensive quality report"""

    analysis = check_audio_quality(audio_file)
    report = parse_quality_report(analysis)
    quality = calculate_quality_score(analysis["result"])

    detailed_report = f"""
# Audio Quality Report

## File Information
- **File**: {audio_file}
- **Duration**: {report['duration_ms']/1000:.2f} seconds
- **Format**: {report['format']}

## Quality Assessment
- **Overall Score**: {quality['score']}/100
- **Grade**: {quality['grade']}
- **Noise Score**: {report['noise_score']:.2f}
- **Severity**: {report['severity']}

## Issues Detected
{'- ' + '\\
- '.join(report['noise_types']) if report['noise_types'] else 'No issues detected'}

## Analysis
{report['analysis']}

## Recommendations
{'- ' + '\\
- '.join(report['recommendations']) if report['recommendations'] else 'No recommendations'}
"""

    return detailed_report

Use Cases

Pre-Recording Validation

def validate_recording_environment():
    """Test recording environment before actual recording"""

    # record_test_audio() is a placeholder — implement using your preferred
    # audio capture library (e.g. sounddevice, pyaudio) to record a short clip.
    test_file = record_test_audio(duration=5)

    # Check quality
    gate_result = quality_gate_check(test_file, min_score=75)

    if gate_result["passed"]:
        return {
            "ready": True,
            "message": "Environment is suitable for recording"
        }
    else:
        return {
            "ready": False,
            "message": "Environment needs improvement",
            "recommendations": gate_result["analysis"]["result"]["recommendations"]
        }

Post-Production Quality Control

def qc_pipeline(audio_files, min_score=80):
    """Quality control for batch of audio files"""

    qc_results = {
        "passed": [],
        "failed": [],
        "total": len(audio_files)
    }

    for audio_file in audio_files:
        result = quality_gate_check(audio_file, min_score)

        if result["passed"]:
            qc_results["passed"].append(audio_file)
        else:
            qc_results["failed"].append({
                "file": audio_file,
                "score": result["score"],
                "issues": result["analysis"]["result"]["noise_types"]
            })

    qc_results["pass_rate"] = len(qc_results["passed"]) / qc_results["total"] * 100

    return qc_results

Output Format

  • Quality analysis JSON
  • Detailed quality report (Markdown/PDF)
  • Noise detection results
  • Improvement recommendations
  • Quality score and grade

Tips for Best Results

  • Test audio files before important recordings
  • Use quality gates in production pipelines
  • Compare before/after processing
  • Track quality metrics over time
  • Address severe issues immediately

Example Usage

User request: "Check the quality of this audio recording and tell me if it's good enough for a podcast"

Skill actions:

  1. Upload audio file to analysis API
  2. Parse quality results
  3. Calculate quality score
  4. Generate recommendations
  5. Provide clear pass/fail assessment
  6. Suggest improvements if needed

Reference

API docs: https://senseaudio.cn/docs/speech_recognition

Usage Guidance
This skill appears coherent, but before installing consider: 1) It will upload audio files to https://senseaudio.cn — do not send sensitive or private recordings unless you trust the provider and have reviewed their privacy/retention policy. 2) Keep the SENSEAUDIO_API_KEY secret, restrict and rotate it if possible, and use least-privilege credentials. 3) Confirm billing, data residency, and compliance requirements for sending audio to an external service. 4) The SKILL.md recommends 'pip install requests' — install packages from official sources and run in an isolated environment if you prefer. 5) Test with non-sensitive sample audio first to validate behavior.
Capability Analysis
Type: OpenClaw Skill Name: audio-quality-checker Version: 1.0.2 The skill is a legitimate integration for the SenseAudio API (senseaudio.cn) designed to analyze audio quality. The implementation in SKILL.md follows standard practices for API-based tools, using the requests library to upload audio files and process JSON responses. No evidence of data exfiltration, malicious execution, or prompt injection was found.
Capability Assessment
Purpose & Capability
The name/description match the code in SKILL.md: the instructions call https://api.senseaudio.cn/v1/audio/analysis and use a SENSEAUDIO_API_KEY. Required capability (an API key for senseaudio.cn) is proportionate to the stated purpose.
Instruction Scope
Runtime instructions only read provided audio files and the declared SENSEAUDIO_API_KEY, send the audio to the senseaudio.cn API, and parse the JSON result. There are no instructions to read unrelated files, additional env vars, or to exfiltrate data to third parties beyond the stated API endpoint. Note: uploading audio to a third‑party endpoint is intrinsic to the skill.
Install Mechanism
This is an instruction-only skill with no install spec (low risk). SKILL.md suggests installing the 'requests' Python package via pip, but nothing is installed automatically by the skill itself.
Credentials
Only a single environment variable (SENSEAUDIO_API_KEY) is required and it is clearly documented as the primary credential for the remote API. No other credentials or unrelated secrets are requested.
Persistence & Privilege
The skill does not request persistent or elevated platform privileges. 'always' is false and the skill does not modify other skills or system settings.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install audio-quality-checker
  3. After installation, invoke the skill by name or use /audio-quality-checker
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.2
- Updated required credentials environment variable to SENSEAUDIO_API_KEY for consistency. - Added Openclaw-compatible metadata for improved integration. - Specified prerequisite Python package installation instructions. - No functional logic changes; documentation and metadata improvements only.
v1.0.1
- Added implementation guide and sample Python code to demonstrate audio analysis, noise detection, reporting, and recommendations. - Introduced advanced features: quality scoring, comparative analysis, batch checks, and automated quality gate functions. - Provided specific recommendations based on detected noise types. - Enhanced documentation for using and integrating the skill with the SenseAudio API.
Metadata
Slug audio-quality-checker
Version 1.0.2
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 2
Frequently Asked Questions

What is Audio Quality Checker?

Analyze audio quality, detect noise types, and provide improvement recommendations. Use when users need to check audio quality, validate recordings, or ident... It is an AI Agent Skill for Claude Code / OpenClaw, with 285 downloads so far.

How do I install Audio Quality Checker?

Run "/install audio-quality-checker" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Audio Quality Checker free?

Yes, Audio Quality Checker is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Audio Quality Checker support?

Audio Quality Checker is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Audio Quality Checker?

It is built and maintained by scikkk (@scikkk); the current version is v1.0.2.

💬 Comments