MediaPipe Ses Sınıflandırıcı görevi, ses verileri üzerinde sınıflandırma gerçekleştirmenizi sağlar. Bu görevi eğitilmiş bir dizi kategoriden ses etkinliklerini tanımlamak için kullanabilirsiniz. Bu talimatlarda, Ses Sınıflandırıcı'nın Python ile nasıl kullanılacağı gösterilmektedir.
Bu görevin özellikleri, modelleri ve yapılandırma seçenekleri hakkında daha fazla bilgi için Genel Bakış'a bakın.
Kod örneği
Ses Sınıflandırıcı için verilen örnek kod, size referans olması açısından bu görevin Python'da eksiksiz bir uygulamasını sunmaktadır. Bu kod, bu görevi test etmenize ve kendi ses sınıflandırıcınızı oluşturmaya başlamanıza yardımcı olur. Ses Sınıflandırıcı örnek kodunu Google Colab ile yalnızca web tarayıcınızı kullanarak görüntüleyebilir, çalıştırabilir ve düzenleyebilirsiniz. Bu örnekle ilgili kaynak kodunu GitHub'da görüntüleyebilirsiniz.
Raspberry Pi için Ses Sınıflandırıcı'yı uyguluyorsanız Raspberry Pi örnek uygulamasına bakın.
Kurulum
Bu bölümde, geliştirme ortamınızı kurmanın temel adımları açıklanmaktadır. Projelerinizi özel olarak Ses Sınıflandırıcı'yı kullanmak için kodlayın. Platform sürümü gereksinimleri de dahil olmak üzere, MediaPipe görevlerini kullanmak amacıyla geliştirme ortamınızı ayarlama hakkında genel bilgileri Python için kurulum kılavuzu bölümünde bulabilirsiniz.
Paketler
Ses Sınıflandırıcı, mediapipe pip paketinin görevidir. Bağımlılığı aşağıdaki komut dosyalarıyla yükleyebilirsiniz:
$ python -m pip install mediapipe
İçe Aktarımlar
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örevle uyumlu, eğitilmiş bir model gerektirir. Ses Sınıflandırıcı için eğitilmiş modeller hakkında daha fazla bilgi almak isterseniz göreve genel bakış Modeller bölümüne bakın.
Bir model seçip indirin ve ardından yerel bir dizinde depolayın. Önerilen Yamnet modelini kullanabilirsiniz.
model_path = '/absolute/path/to/lite-model_yamnet_classification_tflite_1.tflite'
Aşağıda gösterildiği gibi, Model Adı parametresinde 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. create_from_options
işlevi; çalıştırma modu, görünen adlar yerel ayarı, maksimum sonuç sayısı, güven eşiği, kategori izin verilenler listesi ve reddetme listesi dahil olmak üzere yapılandırma seçeneklerini kabul eder. Yapılandırma seçenekleri hakkında daha fazla bilgi için Yapılandırmaya Genel Bakış bölümüne bakın.
Ses Sınıflandırıcı görevi, giriş olarak ses kliplerini ve ses akışlarını destekler. Görevi oluştururken giriş verisi türünüze karşılık gelen çalıştırma modunu belirtmeniz gerekir. Görevi nasıl oluşturacağınızı ve çıkarımı nasıl yapacağınızı görmek için giriş verisi türünüze karşılık gelen sekmeyi seçin.
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 akışı
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 kullanılmak üzere bir Ses Sınıflandırıcı oluşturmanın tam bir örneği için kod örneğine bakın.
Yapılandırma seçenekleri
Bu görev, Python uygulamaları için aşağıdaki yapılandırma seçeneklerine sahiptir:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
running_mode |
Görevin çalışma modunu ayarlar. Ses Sınıflandırıcı'nın iki modu vardır: AUDIO_CLIPS: Ses görevini bağımsız ses kliplerinde çalıştırma modu. AUDIO_STREAM: Ses görevini mikrofon gibi bir ses akışında çalıştırma modu. Bu modda, sınıflandırma sonuçlarını eşzamansız olarak almak için bir işleyici ayarlamak üzere resultListener çağrılmalıdır. |
{AUDIO_CLIPS, AUDIO_STREAM } |
AUDIO_CLIPS |
display_names_locale |
Varsa görev modelinin meta verilerinde sağlanan görünen adlar için kullanılacak etiketlerin dilini ayarlar. İngilizce için varsayılan değer en şeklindedir. TensorFlow Lite Metadata Writer API'yi kullanarak özel modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz
| Yerel ayar kodu | en |
max_results |
İsteğe bağlı olarak döndürülecek en yüksek puanlı sınıflandırma sonuçlarının isteğe bağlı maksimum sayısını ayarlar. < 0 ise mevcut tüm sonuçlar döndürülür. | Pozitif sayılar | -1 |
score_threshold |
Model meta verilerinde belirtilen eşiği (varsa) geçersiz kılan tahmin puanı eşiğini ayarlar. Bu değerin altındaki sonuçlar reddedilir. | [0,0, 1,0] | Belirlenmedi |
category_allowlist |
İsteğe bağlı olarak izin verilen kategori adları listesini ayarlar. Boş değilse kategori adı bu grupta yer almayan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır.
Bu seçenek, category_denylist ile birlikte kullanılamaz ve her iki sonucun da kullanılması hataya neden olur. |
Herhangi bir dize | Belirlenmedi |
category_denylist |
İzin verilmeyen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede yer alan sınıflandırma sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır. Bu seçenek category_allowlist ile birlikte kullanılamaz ve her iki sonucun da kullanılması hataya neden olur. |
Herhangi bir dize | Belirlenmedi |
result_callback |
Ses Sınıflandırıcı, ses akışı modundayken sonuç işleyiciyi, sınıflandırma sonuçlarını eşzamansız olarak alacak şekilde ayarlar. Yalnızca çalıştırma modu AUDIO_STREAM olarak ayarlandığında kullanılabilir |
Yok | Belirlenmedi |
Verileri hazırlama
Ses Sınıflandırıcı, ses klipleriyle ve ses akışlarıyla çalışır. Görev; yeniden örnekleme, arabelleğe alma ve çerçeveleme dahil, veri girişini ön işlemeyle ilgilenir.
Girişinizi ses dosyası veya numpy dizisi olarak hazırlayın, ardından bir MediaPipe AudioData
nesnesine dönüştürün. Giriş seslerinizi sayı dizileri olarak yüklemek için SciPy gibi harici bir kitaplık kullanabilirsiniz.
Aşağıdaki örneklerde, mevcut veri türlerinin her biri için verilerin işlenmek üzere nasıl hazırlanacağı açıklanmakta ve gösterilmektedir:
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 akışı
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
Çıkarımları tetiklemek için çalıştırma modunuza karşılık gelen sınıflandırma işlevini çağırırsınız. Audio Classifier API, giriş ses arabelleğindeki ses etkinlikleri için olası kategorileri döndürür.
Ses klipleri
# Perform audio classification on the provided audio clip. audio_classifier_result_list = classifier.classify(audio_data)
Ses akışı
# 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 akışı modunda çalışırken Ses Sınıflandırıcı görevine, giriş ses verilerinin zaman damgasını da sağlamanız gerekir.
- Ses klibi modelinde çalışırken, Ses Sınıflandırıcı görevi giriş sesini işlemeyi bitirene kadar geçerli iş parçacığını engeller.
Ses Sınıflandırıcı'yı ses klipleriyle çalıştırmayla ilgili daha kapsamlı bir örnek için kod örneğine 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 giriş sesindeki ses etkinlikleri için olası kategorilerin listesini içeren bir AudioClassifierResult
nesnesi döndürür.
Aşağıda, bu görevden alınan çı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, bu görevden döndürülen sınıflandırma sonuçlarının nasıl görüntüleneceğini gösterir. Ayrıntılar için kod örneğine bakın.