Transformers documentation

오디오 처리 컴포넌트 추가

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

오디오 처리 컴포넌트 추가

오디오 모델은 AutoFeatureExtractor 진입점 뒤에 접근 가능한 feature extractor가 필요합니다.

모델 및 구성 단계의 경우, 먼저 모듈형 가이드를 따르세요.

Feature extractor

모델이 원시 오디오 또는 오디오에서 파생된 특징을 소비할 때 feature extractor를 추가합니다.

모델 디렉터리에서 feature_extraction_<model_name>.py를 생성합니다. SequenceFeatureExtractor를 상속하여 새로운 클래스가 공유 패딩, 잘라내기, 저장 및 로드 동작을 갖도록 합니다.

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.
        ...

생성자는 작고 직렬화 가능하도록 유지하세요. 전처리 재현에 필요한 모든 값을 인스턴스 속성으로 저장하고, 열린 파일, 장치, 디코딩된 오디오 배열과 같은 런타임 전용 값은 저장하지 마세요.

__call__ 메서드는 사용자가 sampling_rate를 전달할 때 입력 샘플링 레이트를 검증해야 합니다. 입력 레이트가 모델의 예상 레이트와 다르면, 조용히 리샘플링하는 대신 오류를 발생시켜야 합니다.

변환 스크립트에서 feature extractor를 인스턴스화하고 save_pretrained()를 호출하여 체크포인트와 함께 저장하세요. 전처리 설정 파일을 수동으로 생성하거나 수정하지 마세요.

참고로 Gemma4AudioFeatureExtractor를 확인하세요.

클래스 등록

__all__에 새 클래스를 파일 하단에 추가한 다음, 다음 명령으로 __init__.py를 다시 생성합니다:

python utils/check_inits.py --fix_and_overwrite

새 클래스를 모델 구성에 매핑하여 AutoFeatureExtractor가 로드할 수 있도록 합니다. src/transformers/models/auto/feature_extraction_auto.py의 FEATURE_EXTRACTOR_MAPPING_NAMES에 항목을 추가하되, 주변 항목의 패턴을 따릅니다. 그런 다음 AutoFeatureExtractor의 FEATURE_EXTRACTOR_MAPPING_NAMES 아래에 해당 모델 유형이 표시되는지 확인합니다.

테스트

모델 테스트 디렉터리에서 각 오디오 처리 컴포넌트에 대한 테스트를 추가하세요. Feature extractor 테스트는 보통 tests/models/<model_name>/test_feature_extraction_<model_name>.py에 있습니다.

SequenceFeatureExtractor를 상속하는 feature extractor의 경우 SequenceFeatureExtractionTestMixin을 상속합니다. 이 mixin은 저장 및 로드 동작, padding, truncation, tensor 변환, 그리고 일반적인 feature extractor 속성을 커버합니다. mixin이 feature extractor를 인스턴스화하고 짧은 더미 오디오 입력을 구성할 수 있도록 prepare_feat_extract_dict()와 prepare_inputs_for_common()를 갖춘 tester 객체를 제공하세요.

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)

mixin이 인지하지 못하는 모델 고유 동작에 대한 집중 테스트를 추가하세요. 오디오 feature extractor의 경우, 일반적으로 __call__가 반환하는 feature shape을 확인하고, 잘못된 sampling_rate가 오류를 발생시키는지 검증하며, 사용자 정의 정규화 또는 feature 계산을 확인하는 것을 의미합니다.

모델에 feature extractor를 래핑하는 ProcessorMixin도 포함된 경우, tests/models/<model_name>/test_processing_<model_name>.py를 추가하고 ProcessorTesterMixin을 상속하세요. processor_class를 설정하고, 인자 없이 생성할 수 없는 컴포넌트에 대해 _setup_<component>() 클래스 메서드를 오버라이드하세요. 공통 프로세서 테스트에서 사용되는 플레이스홀더 토큰을 노출하려면 _setup_test_attributes()를 사용하세요.

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", "")

다음 단계

  • @auto_docstring을 사용하여 일관된 docstring을 자동 생성하는 Auto-generating docstrings 가이드를 읽어보세요.
  • 사용자 대상 전처리 동작에 대해서는 Feature extractors 가이드를 참조하세요.
Update on GitHub