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 Talimatlar, Ses Sınıflandırıcı'nın Python ile nasıl kullanılacağını göstermektedir.
Ö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 görebilir. Bu kod, görevi test etmenize ve kendi ses sınıflandırıcınızı oluşturmaya başladınız. Verileri görüntüleyebilir, çalıştırabilir ve Ses Sınıflandırıcı örnek kod Google Colab ile yalnızca web tarayıcınızı kullanarak. Şu öğenin kaynak kodunu görüntüleyebilirsiniz: bu örneği şurada bulabilirsiniz: GitHub'a gidin.
Raspberry Pi için Ses Sınıflandırıcı'yı uyguluyorsanız bkz. Raspberry Pi örneği uygulamasında gösterilir.
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ı platform sürümü gereksinimleri hakkında daha fazla bilgi için Python'da kullanılabilir.
Paketler
Ses Sınıflandırıcı, mediapipe pip paketine görev yapar. Google Etiket Yöneticisi'ni kullanarak bağımlılığı olabilir:
$ python -m pip install mediapipe
İçe aktarılanlar
Ses Sınıflandırıcı görev işlevlerine erişmek için aşağıdaki sınıfları içe aktarın:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import audio
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, ardından bu modeli yerel bir dizinde depolayın. Tekliflerinizi otomatikleştirmek ve optimize etmek için önerilen Yamnet modeli.
model_path = '/absolute/path/to/lite-model_yamnet_classification_tflite_1.tflite'
Aşağıda gösterildiği gibi, Model Adı parametresi içinde modelin yolunu belirtin:
base_options = BaseOptions(model_asset_path=model_path)
Görevi oluşturma
Görevi oluşturmak için create_from_options
işlevini kullanın. İlgili içeriği oluşturmak için kullanılan
create_from_options
işlevi, çalıştırma da dahil olmak üzere yapılandırma seçeneklerini kabul eder
mod, görünen adlar yerel ayarı, maksimum sonuç sayısı, güven eşiği,
kategori izin verilenler listesi
ve ret listeleri de dahildir. Yapılandırma hakkında daha fazla bilgi için
Yapılandırmaya Genel Bakış bölümüne göz atın.
Ses Sınıflandırıcı görevi, giriş olarak ses kliplerini ve ses akışlarını destekler. Siz geçerli olduğunda giriş verisi türünüze karşılık gelen çalışma modunu görevi oluşturmayı öğrendiniz. Görmek için giriş verisi türünüze karşılık gelen sekmeyi seçin nasıl oluşturacağınızı ve çıkarımda bulunacağınızı öğreneceksiniz.
Ses klipleri
AudioClassifier = mp.tasks.audio.AudioClassifier AudioClassifierOptions = mp.tasks.audio.AudioClassifierOptions AudioRunningMode = mp.tasks.audio.RunningMode BaseOptions = mp.tasks.BaseOptions options = AudioClassifierOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), max_results=5, running_mode=AudioRunningMode.AUDIO_CLIPS) with AudioClassifier.create_from_options(options) as classifier: # The classifier is initialized. Use it here. # ...
Ses yayını
AudioClassifier = mp.tasks.audio.AudioClassifier AudioClassifierOptions = mp.tasks.audio.AudioClassifierOptions AudioClassifierResult = mp.tasks.audio.AudioClassifierResult AudioRunningMode = mp.tasks.audio.RunningMode BaseOptions = mp.tasks.BaseOptions def print_result(result: AudioClassifierResult, timestamp_ms: int): print(AudioClassifierResult result: {}’.format(result)) options = AudioClassifierOptions( base_options=BaseOptions(model_asset_path='/path/to/model.tflite'), running_mode=AudioRunningMode.AUDIO_STREAM, max_results=5, result_callback=print_result) with AudioClassifier.create_from_options(options) as classifier: # The classifier is initialized. Use it here. # ...
Sesle kullanmak üzere Ses Sınıflandırıcı oluşturmayla ilgili tam bir örnek için bkz. kod örnek bölümüne bakın.
Yapılandırma seçenekleri
Bu görev, Python uygulamaları için aşağıdaki yapılandırma seçeneklerini içerir:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
running_mode |
Görev için çalışma modunu ayarlar. Ses Sınıflandırıcı'nın iki modu vardır: . AUDIO_CLIPS: Bağımsız ses kliplerinde ses görevini çalıştırma modu. . . AUDIO_STREAM: Ses görevinin mikrofon gibi bir ses akışında çalıştırılması modu. Bu modda, resultListener, sınıflandırma sonuçlarını almak üzere bir dinleyici ayarlamak için çağrıldı eşzamansız olarak ayarlayabilirsiniz. |
{AUDIO_CLIPS, AUDIO_STREAM } |
AUDIO_CLIPS |
display_names_locale |
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 |
max_results |
İ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 |
score_threshold |
Ş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ı |
category_allowlist |
İ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 category_denylist ile birlikte kullanılamaz ve
her ikisi de hataya neden olur. |
Tüm dizeler | Ayarlanmadı |
category_denylist |
İ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.category_allowlist |
Tüm dizeler | Ayarlanmadı |
result_callback |
Sonuç işleyiciyi sınıflandırma sonuçlarını alacak şekilde ayarlar
Ses Sınıflandırıcı ses akışında olduğunda eşzamansız olarak
yatırım yapmanız önemlidir. Yalnızca koşu modu AUDIO_STREAM olarak ayarlandığında kullanılabilir |
Yok | Ayarlanmadı |
Verileri hazırlama
Ses Sınıflandırıcı, ses klipleri ve ses akışlarıyla çalışır. Görev, projenin yürütülmesi sırasında yeniden örnekleme, arabelleğe alma ve çerçeveleme dahil olmak üzere veri girişi ön işlemesi.
Girişinizi ses dosyası veya Numpy dizisi olarak hazırlayın ve daha sonra
MediaPipe AudioData
nesnesi. Şunun gibi harici bir kitaplık kullanabilirsiniz:
Giriş seslerinizi numpy diziler olarak yüklemek için SciPy.
Aşağıdaki örneklerde verilerin işlenmek üzere nasıl hazırlanacağı açıklanır mevcut veri türlerinin her biri:
Ses klipleri
import numpy as np from scipy.io import wavfile AudioData = mp.tasks.components.containers.AudioData sample_rate, buffer = wavfile.read('/path/to/audio.wav') audio_data = AudioData.create_from_array( buffer.astype(float) / np.iinfo(np.int16).max, sample_rate)
Ses yayını
import numpy as np AudioData = mp.tasks.components.containers.AudioData # Read microphone data as np arrays, then call audio_data = AudioData.create_from_array( buffer.astype(float) / np.iinfo(np.int16).max, sample_rate)
Görevi çalıştırma
Tetikleyicinin etkinleşmesi için koşu modunuza karşılık gelen sınıflandırma işlevini çıkarımlar. Audio Classifier API, ses için olası kategorileri döndürür. etkinlikler olduğunda.
Ses klipleri
# Perform audio classification on the provided audio clip. audio_classifier_result_list = classifier.classify(audio_data)
Ses yayını
# Send live audio data to perform audio classification. # Results are sent to the `result_callback` provided in the `AudioClassifierOptions` classifier.classify_async(audio_data, timestamp_ms)
Aşağıdakileri göz önünde bulundurun:
- Ses yayını modunda çalışırken ayrıca Ses Sınıflandırıcı görevi, giriş ses verilerinin zaman damgasıdır.
- Ses klibi modelinde çalışırken Ses Sınıflandırıcı görevi, iş parçacığı, giriş sesini işlemeyi bitirene kadar devam eder.
Ses klipleriyle Ses Sınıflandırıcı'yı çalıştırmaya ilişkin daha kapsamlı bir örnek için bkz. kod örnek bölümüne bakın.
Sonuçları işleme ve görüntüleme
Çıkarım çalıştırıldığında, Ses Sınıflandırıcı görevi bir
Olası kategorilerin listesini içeren AudioClassifierResult
nesnesi
ses etkinliklerini kullanın.
Aşağıda, bu görevdeki çıkış verilerinin bir örneği gösterilmektedir:
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. bu görevden döndürülen sonuçlar için kodu örnek inceleyebilirsiniz.