MediaPipe Ses Sınıflandırıcı görevi, ses verileri üzerinde sınıflandırma yapmanıza olanak tanır. Şunları yapabilirsiniz: bu görevi, eğitilmiş bir grup kategoriden ses etkinliklerini belirlemek için kullanın. Bu talimatlarda, Düğüm ve web uygulamaları için Ses Sınıflandırıcı'nın nasıl kullanılacağı gösterilmektedir.
Bu görevi, demo. Özellikler, modeller ve yapılandırma seçenekleri hakkında daha fazla bilgi Bu görev hakkında daha fazla bilgi için Genel Bakış'ı inceleyin.
Kod örneği
Ses Sınıflandırıcı için örnek kod, bu görevi aşağıda bulabilirsiniz. Bu kod, görevi test etmenize Kendi ses sınıflandırma uygulamanızı geliştirmeye başlayın. Bu projeleri görüntüleyebilir, çalıştırabilir, değerini değiştirin ve Ses Sınıflandırıcı örnek kodu yalnızca web tarayıcınızı kullanarak.
Kurulum
Bu bölümde, geliştirme ortamınızı ve ayarlarınızı yönetmeyle ilgili Ses Sınıflandırıcı'yı kullanmak için özel olarak kod projeleri. Şu konularda genel bilgi için: dahil olmak üzere MediaPipe görevlerini kullanmak için geliştirme ortamınızı daha fazla bilgi için Web için kurulum kılavuzu.
JavaScript paketleri
Ses Sınıflandırıcı kodu MediaPipe @mediapipe/tasks-audio
üzerinden kullanılabilir
NPM paketi. Şunları yapabilirsiniz:
bu kitaplıkları, platformda sağlanan bağlantılardan bulup indirin
Kurulum kılavuzu.
Yerel hazırlık için gerekli paketleri aşağıdaki kodla yükleyebilirsiniz kullanabilirsiniz:
npm install @mediapipe/tasks-audio
Görev kodunu içerik yayınlama ağı (CDN) aracılığıyla içe aktarmak istiyorsanız hizmetini kullanmak için, HTML dosyanızdaki etikete aşağıdaki kodu ekleyin:
<!-- Replace "my-cdn-service.com" with your CDN -->
<head>
<script src="https://my-cdn-service.com/npm/@mediapipe/tasks-audio/audio_bundle.js"
crossorigin="anonymous"></script>
</head>
Model
MediaPipe Ses Sınıflandırıcı görevi bu görevi görebilir. Ses Sınıflandırıcı için eğitilmiş mevcut modeller hakkında daha fazla bilgi için bkz. göreve genel bakış Modeller bölümü.
Bir model seçip indirin ve bu modeli proje dizininizde depolayın. örneğin:
<dev-project-root>/app/shared/models/
Görevi oluşturma
Şu işlemler için Ses Sınıflandırıcı createFrom...()
işlevlerinden birini kullanın:
çıkarımları yapmaya hazır hale getirebilirsiniz. createFromModelPath()
kullanın
işlevi, eğitilen model dosyasına giden göreli veya mutlak bir yolla
Modeliniz belleğe zaten yüklenmişse aşağıdakileri kullanabilirsiniz:
createFromModelBuffer()
yöntemini çağırın.
Aşağıdaki kod örneğinde, createFromOptions()
işlevinin
görevi ayarlayın. createFromOptions
işlevi,
Yapılandırma seçenekleri olan Ses Sınıflandırıcı. Yapılandırma hakkında daha fazla bilgi için
Yapılandırma seçenekleri bölümüne bakın.
Aşağıdaki kod, görevin özel seçenekler:
const audio = await FilesetResolver.forAudioTasks(
"https://my-cdn-service.com/npm/@mediapipe/tasks-audio/wasm"
);
const audioClassifier = await AudioClassifier.createFromOptions(audio, {
baseOptions: {
modelAssetPath:
"https://tfhub.dev/google/lite-model/yamnet/classification/tflite/1?lite-format=tflite"
}
});
Ses Sınıflandırıcı örnek kod uygulaması, kullanıcının
farklı olabilir. Bu yaklaşım, görev oluşturma kodunu daha karmaşık hale
kullanım alanınıza uygun olmayabilir. Farklı modları görebilirsiniz.
runAudioClassification()
ve runStreamingAudioClassification()
içinde
işlevleri
example code
.
Yapılandırma seçenekleri
Bu görev, Web ve JavaScript için aşağıdaki yapılandırma seçeneklerine sahiptir uygulamalar:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
displayNamesLocale |
görev modelinin meta verileri (varsa). Şunun için varsayılan: en
İngilizce. Özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz
TensorFlow Lite Metadata Writer API'yi kullanarak
| Yerel ayar kodu | en |
maxResults |
İsteğe bağlı maksimum puanlı sınıflandırma sonucu sayısını şu değere ayarlar: dön. < 0 ise tüm mevcut sonuçlar döndürülür. | Pozitif sayılar | -1 |
scoreThreshold |
Şu kriterde sağlanan tahmini geçersiz kılan bir tahmin puanı eşiğini belirler: model meta verileri (varsa). Bu değerin altındaki sonuçlar reddedilir. | [0,0, 1,0] | Ayarlanmadı |
categoryAllowlist |
İzin verilen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse
kategori adı bu kümede bulunmayan sınıflandırma sonuçları
filtrelendi. Yinelenen veya bilinmeyen kategori adları yoksayılır.
Bu seçenek categoryDenylist ile birlikte kullanılamaz ve
her ikisi de hataya neden olur. |
Tüm dizeler | Ayarlanmadı |
categoryDenylist |
İzin verilmeyen kategori adlarının isteğe bağlı listesini ayarlar. Eğer
Boş olmayan, kategori adı bu kümede bulunan sınıflandırma sonuçları filtrelenir
çıkar. Yinelenen veya bilinmeyen kategori adları yoksayılır. Bu seçenek birlikte
hariç tutmanın yanı sıra her iki sonucun da hatalı olarak kullanılmasıdır.categoryAllowlist |
Tüm dizeler | Ayarlanmadı |
Verileri hazırlama
Ses Sınıflandırıcı, ses klipleri ve ses akışlarıyla çalışır ve seslerle çalışabilir tarafından desteklenen herhangi bir biçimde olması gerekir. Görev, verileri işler giriş ön işlemesi (yeniden örnekleme, arabelleğe alma ve çerçeveleme dahil).
Görevi çalıştırma
Ses Sınıflandırıcı, ses klibine ilişkin çıkarımları çalıştırmak için classify()
yöntemini kullanır
dosyalar veya ses akışları olabilir. Audio Classifier API, mümkün olan
giriş sesinde tanınan sesli etkinliklerin kategorileri.
classify()
Ses Sınıflandırıcı yöntemine yapılan çağrılar eşzamanlı olarak çalışır ve
kullanıcı arayüzü iş parçacığı. Bir cihazın mikrofonundan gelen sesi sınıflandırırsanız
her sınıflandırma ana iş parçacığını engeller. Bu durumu önlemek için
başka bir iş parçacığında classify()
çalıştırmak için web çalışanları uygulanıyor.
Aşağıdaki kod, görev modeliyle işlemin nasıl yürütüleceğini gösterir:
Ses klipleri
// Create audio buffer const sample = await response.arrayBuffer(); const audioBuffer = await audioCtx.decodeAudioData(sample); // Use AudioClassifier to run classification const results = audioClassifier.classify( audioBuffer.getChannelData(0), audioBuffer.sampleRate );
Ses yayını
stream = await navigator.mediaDevices.getUserMedia(constraints); audioCtx = new AudioContext({ sampleRate: 16000 }); const source = audioCtx.createMediaStreamSource(stream); const scriptNode = audioCtx.createScriptProcessor(16384, 1, 1); scriptNode.onaudioprocess = function (audioProcessingEvent) { const inputBuffer = audioProcessingEvent.inputBuffer; let inputData = inputBuffer.getChannelData(0); // Classify the audio const result = audioClassifier.classify(inputData); const categories = result[0].classifications[0].categories; };
Ses Sınıflandırıcı görevi çalıştırmayla ilgili daha kapsamlı bilgi için bkz. kod örneği hakkında daha fazla bilgi edinin.
Sonuçları işleme ve görüntüleme
Bir çıkarım çalıştırmasını tamamladığınızda, Ses Sınıflandırıcı görevi bir
Olası kategorilerin listesini içeren AudioClassifierResult
nesnesi
sesteki nesneler için kullanılabilir.
AudioClassifierResult:
Timestamp in microseconds: 100
ClassificationResult #0:
Timestamp in microseconds: 100
Classifications #0 (single classification head):
head index: 0
category #0:
category name: "Speech"
score: 0.6
index: 0
category #1:
category name: "Music"
score: 0.2
index: 1
Ses Sınıflandırıcı örnek kodu, sınıflandırmanın nasıl görüntüleneceğini gösterir. daha fazla bilgi edinmek için kod örneği inceleyebilirsiniz.