AI-powered audio authentication - detect fake vs real audio using deep learning
npm install authaudiobash
npm install authaudio
`
Quick Start
`javascript
import AuthAudio from 'authaudio';
// Create classifier instance
const classifier = new AuthAudio();
// Load the model (only needed once)
await classifier.loadModel();
// Predict from pre-extracted MFCC features (40 coefficients)
const features = [/ your 40 MFCC coefficients /];
const result = await classifier.predictFromFeatures(features);
console.log(result);
// Output:
// {
// prediction: 'Human',
// confidence: '95.23%',
// probabilities: {
// human: '95.23%',
// ai: '4.77%'
// },
// raw: {
// human: 0.9523,
// ai: 0.0477
// }
// }
`
Feature Extraction
This package requires pre-extracted MFCC features. Use Python with librosa to extract features:
`python
import librosa
import numpy as np
Load audio file
audio, sr = librosa.load('audio.wav')
Extract 40 MFCC coefficients
mfcc = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=40)
Calculate mean across time (this gives you 40 features)
features = np.mean(mfcc.T, axis=0)
Convert to list for JavaScript
features_list = features.tolist()
print(features_list) # Use these in your Node.js app
`
API Reference
$3
Creates a new AuthAudio classifier instance.
`javascript
const classifier = new AuthAudio();
`
$3
Loads the TensorFlow.js model. Must be called before making predictions.
`javascript
await classifier.loadModel();
`
$3
Predicts whether audio is fake or real from pre-extracted MFCC features.
Parameters:
- features (Array | Float32Array): 40 MFCC coefficients
Returns: Promise `javascript
{
prediction: string, // 'Human' or 'AI-Generated'
confidence: string, // Confidence percentage
probabilities: {
human: string, // Human probability percentage
ai: string // AI probability percentage
},
raw: {
human: number, // Raw human probability (0-1)
ai: number // Raw AI probability (0-1)
}
}
`
Complete Example
$3
`python
extract_features.py
import librosa
import numpy as np
import json
def extract_features(audio_path):
# Load audio
audio, sr = librosa.load(audio_path)
# Extract MFCC
mfcc = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=40)
# Get mean
features = np.mean(mfcc.T, axis=0)
return features.tolist()
Extract and save
features = extract_features('audio.wav')
with open('features.json', 'w') as f:
json.dump(features, f)
`
$3
`javascript
// classify.js
import AuthAudio from 'authaudio';
import { readFileSync } from 'fs';
async function main() {
// Load pre-extracted features
const features = JSON.parse(readFileSync('features.json', 'utf-8'));
// Create and load classifier
const classifier = new AuthAudio();
await classifier.loadModel();
// Predict
const result = await classifier.predictFromFeatures(features);
console.log(Prediction: ${result.prediction});
console.log(Confidence: ${result.confidence});
console.log(Probabilities:, result.probabilities);
}
main();
``