Transformers documentation

Ses işleme bileşenleri ekleyin

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ses işleme bileşenleri ekleyin

Ses modelleri, AutoFeatureExtractor giriş noktası üzerinden erişilebilen bir özellik çıkarıcı gerektirir.

Model ve yapılandırma adımları için önce modüler kılavuza bakın.

Özellik çıkarıcı

Model ham ses veya ses kaynaklı özellikler tükettiğinde bir özellik çıkarıcı ekleyin.

Model dizininde feature_extraction_<model_name>.py dosyasını oluşturun. Yeni sınıfın ortak dolgu, kırpma, kaydetme ve yükleme davranışlarını alabilmesi için SequenceFeatureExtractor sınıfından türetin.

from ...feature_extraction_sequence_utils import SequenceFeatureExtractor


class MyModelFeatureExtractor(SequenceFeatureExtractor):
    model_input_names = ["input_features", "attention_mask"]

    def __init__(self, feature_size=80, sampling_rate=16000, padding_value=0.0, **kwargs):
        super().__init__(feature_size=feature_size, sampling_rate=sampling_rate, padding_value=padding_value, **kwargs)

    def __call__(self, raw_speech, sampling_rate=None, **kwargs):
        if sampling_rate is not None and sampling_rate != self.sampling_rate:
            raise ValueError(f"`sampling_rate` must be {self.sampling_rate}, but got {sampling_rate}.")

        # Convert raw_speech to model features here.
        ...

Oluşturucuyu küçük ve serileştirilebilir tutun. Ön işleme sürecini yeniden üretmek için gereken her değeri bir örnek özelliği olarak saklayın ve açık dosyalar, cihazlar veya çözümlenmiş ses dizileri gibi yalnızca çalışma zamanında kullanılan değerleri saklamaktan kaçının.

__call__ yöntemi, kullanıcılar sampling_rate parametresini geçirdiğinde girdi örneklemesini doğrulamalıdır. Girdi oranı, modelin beklediği orandan farklıysa sessizce yeniden örneklem yapmak yerine bir hata fırlatılmalıdır.

Özellik çıkarıcısını, dönüştürme betiğinde örnekleyerek ve save_pretrained() çağrısını yaparak kontrol noktasıyla birlikte kaydedin. Ön işleme yapılandırma dosyalarını manuel olarak oluşturmaya veya düzenlemeye çalışmayın.

Referans için Gemma4AudioFeatureExtractor'a bakın.

Sınıfları kaydet

Yeni sınıfları dosyanın altındaki __all__ listesine ekleyin, ardından __init__.py dosyasını şu komutla yeniden oluşturun:

python utils/check_inits.py --fix_and_overwrite

Yeni sınıfı, AutoFeatureExtractor'ın yükleyebilmesi için model yapılandırmasına eşleyin. src/transformers/models/auto/feature_extraction_auto.py dosyasındaki FEATURE_EXTRACTOR_MAPPING_NAMES içine, yakın girişlerin kalıbını takip ederek bir giriş ekleyin. Ardından, model türünün AutoFeatureExtractor için FEATURE_EXTRACTOR_MAPPING_NAMES altında göründüğünü doğrulayın.

Test

Model test dizininde, ses işleme bileşenlerinin her biri için testler ekleyin. Özellik çıkarıcı testleri genellikle tests/models/<model_name>/test_feature_extraction_<model_name>.py dosyasında bulunur.

SequenceFeatureExtractor sınıfından türeyen özellik çıkarıcılar için SequenceFeatureExtractionTestMixin sınıfından türetilmelidir. Bu mixin, kaydetme ve yükleme davranışını, dolgu (padding) ve kırpma (truncation) işlemlerini, tensör dönüşümünü ve yaygın özellik çıkarıcı özelliklerini kapsar. Mixin'in özellik çıkarıcısını örnekleyebilmesi ve kısa sahte ses girdileri oluşturabilmesi için prepare_feat_extract_dict() ve prepare_inputs_for_common() yöntemlerini içeren bir tester nesnesi sağlanmalıdır.

from ...test_sequence_feature_extraction_common import SequenceFeatureExtractionTestMixin

class MyModelFeatureExtractionTest(SequenceFeatureExtractionTestMixin, unittest.TestCase):
    feature_extraction_class = MyModelFeatureExtractor

    def setUp(self):
        self.feat_extract_tester = MyModelFeatureExtractionTester(self)

Karışımın (mixin) bilmediği, modele özgü davranışlar için odaklı testler ekleyin. Ses özellik çıkarıcıları (feature extractor) için bu genellikle, __call__ tarafından döndürülen özellik şeklinin (feature shape) kontrol edilmesi, hatalı bir sampling_rate değerinin hata (error) fırlattığının doğrulanması ve özel normalizasyon veya özellik hesaplama işlemlerinin kontrol edilmesini ifade eder.

Eğer model, özellik çıkarıcısını saran bir ProcessorMixin da içeriyorsa, tests/models/<model_name>/test_processing_<model_name>.py dosyasını ekleyin ve ProcessorTesterMixin sınıfından türetin. processor_class değerini ayarlayın ve argümansız oluşturulamayan bileşenler için _setup_<component>() sınıf yöntemlerini geçersiz kılın. Ortak işlemci testlerinde kullanılan yer tutucu jetonları (placeholder tokens) açığa çıkarmak için _setup_test_attributes() yöntemini kullanın.

from ...test_processing_common import ProcessorTesterMixin

class MyModelProcessorTest(ProcessorTesterMixin, unittest.TestCase):
    processor_class = MyModelProcessor

    @classmethod
    def _setup_feature_extractor(cls):
        return cls._get_component_class_from_processor("feature_extractor")(sampling_rate=16000)

    @classmethod
    def _setup_test_attributes(cls, processor):
        cls.audio_token = getattr(processor, "audio_token", "")

Sonraki adımlar

Update on GitHub