bitcheck-audio / AUDIO_INTEGRATION.md
BitCheck Dev
docs: add integration guide and HTML test page
2d7fc20
|
Raw
History Blame Contribute Delete
3.99 kB

BitCheck Audio Verification - Backend Integration Guide

This guide provides instructions for integrating the deployed Hugging Face audio verification model into your backend services.

Base URL

The service is deployed on Hugging Face Spaces. Use the direct API URL for requests: https://jaykay73-bitcheck-audio.hf.space (replace with the exact Space URL if it differs).

Endpoint

POST /verify/audio

Analyzes an uploaded audio file and returns a trust score indicating the likelihood that the audio is AI-generated.

Request Headers

  • Accept: application/json
  • Content-Type: multipart/form-data

Request Parameters (Form Data)

Parameter Type Required Default Description
file File Yes - The audio or video file to be analyzed (e.g., .wav, .mp3, .m4a).
max_duration_seconds Integer No 60 Maximum duration of audio to process in seconds.
strict_duration_limit Boolean No false If true, rejects files longer than max_duration_seconds. If false, truncates them.
return_features Boolean No false If true, includes raw extracted audio features in the response.
run_quality_analysis Boolean No true If true, performs audio quality analysis (e.g., silence detection).

Integration Examples

cURL:

curl -X POST "https://jaykay73-bitcheck-audio.hf.space/verify/audio" \
  -H "Accept: application/json" \
  -F "file=@path/to/your/audio.wav" \
  -F "return_features=false"

Python (requests):

import requests

url = "https://jaykay73-bitcheck-audio.hf.space/verify/audio"
file_path = "path/to/your/audio.wav"

with open(file_path, "rb") as f:
    files = {"file": f}
    data = {"return_features": "false"}
    
    response = requests.post(url, files=files, data=data)
    
if response.status_code == 200:
    result = response.json()
    print("Trust Score:", result.get("trust", {}).get("trust_score"))
    print("Decision:", result.get("trust", {}).get("decision"))
else:
    print("Error:", response.status_code, response.text)

Node.js (Axios):

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

const url = 'https://jaykay73-bitcheck-audio.hf.space/verify/audio';
const filePath = 'path/to/your/audio.wav';

const form = new FormData();
form.append('file', fs.createReadStream(filePath));
form.append('return_features', 'false');

axios.post(url, form, {
    headers: {
        ...form.getHeaders()
    }
})
.then(response => {
    console.log('Trust Score:', response.data.trust.trust_score);
    console.log('Decision:', response.data.trust.decision);
})
.catch(error => {
    console.error('Error:', error.response ? error.response.data : error.message);
});

Response Structure

The endpoint returns a detailed JSON report containing metadata, preprocessing details, quality analysis, model results, and the final trust score.

A successful response (200 OK) looks like this:

{
  "verification_id": "uuid-string",
  "processing_time_ms": 1234,
  "file_type": "audio",
  "file_validation": {
    "valid": true,
    "warnings": [],
    "error": null,
    "saved_path": "/path/to/file"
  },
  "audio_metadata": { 
    "duration_seconds": 5.4,
    "sample_rate": 44100
  },
  "audio_quality": { 
    "checked": true,
    "quality_risk_score": 0.1
  },
  "model_analysis": {
    "model_found": true,
    "risk_score": 0.85,
    "fake_probability": 0.85
  },
  "trust": {
    "trust_score": 15,         // 0 to 100 (0=Fake, 100=Real)
    "decision": "reject",      // "accept", "review", or "reject"
    "risk_level": "high",      // "low", "medium", or "high"
    "reasons": [
      "High probability of AI generation detected."
    ]
  }
}

Note: The most important fields for your backend integration are located under the trust object, specifically trust_score and decision.