ml5.js предоставляет высокоуровневый интерфейс для работы с машинным обучением в браузере, позволяя легко интегрировать модели для обработки изображений, текста, видео и звука. Одним из мощных инструментов библиотеки является SoundClassifier, предназначенный для распознавания и классификации аудиосигналов в реальном времени.
Для начала работы с классификатором звуков необходимо подключить библиотеку ml5.js и создать экземпляр классификатора. В качестве источника модели можно использовать предобученные модели, предоставленные ml5.js или сторонние модели в формате TensorFlow.js.
let classifier;
function preload() {
// Загрузка предобученной модели для классификации звуков
classifier = ml5.soundClassifier('https://teachablemachine.withgoogle.com/models/YourModelURL/model.json');
}
Ключевой момент: ml5.soundClassifier
автоматически запрашивает доступ к микрофону пользователя и начинает
захват звука при инициализации.
SoundClassifier может работать как с предзаписанными аудиофайлами, так и с микрофоном в реальном времени. Для работы с микрофоном необходимо убедиться, что браузер поддерживает Web Audio API.
function setup() {
createCanvas(400, 200);
// Классификатор готов к использованию после загрузки модели
classifier.classify(gotResult);
}
function gotResult(error, results) {
if (error) {
console.error(error);
return;
}
// results — массив объектов с предсказаниями
console.log(results);
}
Структура объекта results:
label — название класса звука.confidence — уверенность классификатора (от 0 до
1).SoundClassifier позволяет управлять точностью и частотой предсказаний. При использовании предобученных моделей важно учитывать требования к частоте дискретизации и длительности аудио.
let options = {
probabilityThreshold: 0.85 // фильтр предсказаний с низкой уверенностью
};
classifier = ml5.soundClassifier('https://teachablemachine.withgoogle.com/models/YourModelURL/model.json', options, modelReady);
function modelReady() {
console.log('Модель загружена и готова к работе');
classifier.classify(gotResult);
}
Рекомендации:
probabilityThreshold.Для интерактивных приложений полезно отображать текущий звук на экране. Это позволяет наглядно видеть результаты классификации и уровень уверенности модели.
function gotResult(error, results) {
if (error) {
console.error(error);
return;
}
background(200);
textSize(24);
fill(0);
text(`Звук: ${results[0].label}`, 10, 50);
text(`Уверенность: ${(results[0].confidence * 100).toFixed(2)}%`, 10, 100);
}
Совет: использовать цветовую индикацию или графики уровня звука для более наглядного интерфейса.
SoundClassifier легко интегрируется с различными событиями браузера. Например, можно запускать определённые функции при распознавании конкретного звука.
function gotResult(error, results) {
if (error) {
console.error(error);
return;
}
let label = results[0].label;
if (label === 'Аплодисменты') {
console.log('Включить анимацию конфетти');
} else if (label === 'Свист') {
console.log('Запустить звуковой эффект');
}
}
ml5.js позволяет использовать кастомные модели, обученные с помощью Teachable Machine или TensorFlow.js. Основные шаги:
.bin.ml5.soundClassifier.Пример подключения кастомной модели:
let classifier;
classifier = ml5.soundClassifier('models/customSoundModel/model.json', modelReady);
results, чтобы не
создавать утечки памяти.SoundClassifier в ml5.js является мощным инструментом для создания интерактивных веб-приложений с распознаванием звуков, позволяя подключать как готовые модели, так и кастомные решения с минимальными усилиями и высокой гибкостью.