Transformers documentation

Wav2Vec2-BERT

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

and get access to the augmented documentation experience

to get started

이 모델은 2023-12-08에 HF papers에 게시되었으며, 2024-01-18에 Hugging Face Transformers에 기여되었습니다.

SDPA

Wav2Vec2-BERT

개요

Wav2Vec2-BERT 모델은 Meta AI의 Seamless Communication 팀이 Seamless: Multilingual Expressive and Streaming Speech Translation에서 제안했습니다.

이 모델은 143개 이상의 언어를 포함하는 450만 시간의 라벨 없는 오디오 데이터로 사전 학습되었습니다. 자동 음성 인식(ASR)이나 오디오 분류와 같은 다운스트림 작업에 사용하려면 파인튜닝이 필요합니다.

모델의 공식 결과는 논문의 3.2.1절에서 확인할 수 있습니다.

해당 논문의 초록은 다음과 같습니다:

자동 음성 번역 분야의 최근 발전은 언어 커버리지를 크게 확장하고, 멀티모달 기능을 향상시키며, 다양한 작업과 기능을 가능하게 했습니다. 그럼에도 불구하고, 오늘날 대규모 자동 음성 번역 시스템은 인간 간 대화와 비교했을 때 기계 매개 커뮤니케이션이 매끄럽게 느껴지도록 돕는 핵심 기능을 갖추고 있지 않습니다. 본 연구에서는 스트리밍 방식으로 끝에서 끝까지 표현력이 풍부하고 다국어 번역을 가능하게 하는 모델 가문을 소개합니다. 먼저, 대규모 다국어 및 멀티모달 SeamlessM4T 모델의 개선 버전인 SeamlessM4T v2를 제공합니다. UnitY2 프레임워크의 업데이트 버전을 통합한 이 새로운 모델은 더 많은 저자원 언어 데이터로 학습되었습니다. 확장된 SeamlessAlign은 76개 언어에 대해 총 114,800시간의 자동 정렬 데이터를 추가합니다. SeamlessM4T v2는 두 가지 최신 모델인 SeamlessExpressive와 SeamlessStreaming의 기반이 됩니다. SeamlessExpressive는 음성 스타일과 억양을 보존하는 번역을 가능하게 합니다. 이전의 표현력 있는 음성 연구 노력과 비교할 때, 본 연구는 화자의 음성 스타일을 보존하는 동시에 발화 속도나 휴지 같은 덜 탐구된 억양 측면을 다룹니다. SeamlessStreaming의 경우, 본 모델은 완전한 원본 발화를 기다리지 않고도 낮은 지연 시간의 대상 번역을 생성하기 위해 Efficient Monotonic Multihead Attention(EMMA) 메커니즘을 활용합니다. SeamlessStreaming은 그 종류 중 최초로서, 여러 원본 및 대상 언어에 대한 동시 음성-음성/텍스트 번역을 가능하게 합니다. 이러한 모델의 성능을 이해하기 위해, 기존 자동 지표의 새로운 버전과 수정된 버전을 결합하여 억양, 지연 시간, 견고성을 평가했습니다. 인간 평가의 경우, 의미, 자연스러움, 표현력의 보존에서 가장 관련성이 높은 속성을 측정하도록 조정된 기존 프로토콜을 적용했습니다. 모델이 안전하고 책임감 있게 사용될 수 있도록 보장하기 위해, 멀티모달 기계 번역에 대한 최초의 알려진 레드팀링 노력, 추가된 독성(Toxicity)의 탐지 및 완화 시스템, 성별 편향에 대한 체계적 평가, 딥페이크의 영향을 완화하도록 설계된 들리지 않는 로컬라이즈드 워터마킹 메커니즘을 구현했습니다. 그 결과, SeamlessExpressive와 SeamlessStreaming의 주요 구성 요소를 결합하여 실시간으로 표현력 있는 언어 간 커뮤니케이션을 가능하게 하는 최초의 공개 시스템인 Seamless를 구축했습니다. 요약하자면, Seamless는 Universal Speech Translator를 SF 개념에서 현실의 기술로 전환하는 데 필요한 기술적 기반에 대한 중요한 통찰을 제공합니다. 마지막으로, 본 연구의 기여물—모델, 코드, 워터마킹 탐지기를 포함하여—아래 링크에서 공개적으로 배포되고 접근할 수 있습니다.

이 모델은 ylacombe님이 기여했습니다. 원본 코드는 여기에서 찾을 수 있습니다.

사용 팁

  • Wav2Vec2-BERT는 Wav2Vec2-Conformer와 동일한 아키텍처를 따르지만, 인과적 depthwise convolutional layer를 사용하며, 원시 wave형 대신 오디오의 mel-spectrogram 표현을 입력으로 사용합니다.
  • Wav2Vec2-BERT는 config.position_embeddings_type를 올바르게 설정하여 상대 위치 임베딩을 사용하지 않거나, Shaw 방식의 위치 임베딩, Transformer-XL 방식의 위치 임베딩, 또는 회전 위치 임베딩을 사용할 수 있습니다.
  • Wav2Vec2-BERT는 단순한 합성곱 네트워크 대신 Conformer 기반 어댑터 네트워크를 도입합니다.

리소스

Automatic Speech Recognition
Audio Classification

Wav2Vec2BertConfig

클래스 transformers.Wav2Vec2BertConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int | None = Nonehidden_size: int = 1024num_hidden_layers: int = 24num_attention_heads: int = 16intermediate_size: int = 4096feature_projection_input_dim: int = 160hidden_act: str = 'swish'hidden_dropout: float | int = 0.0activation_dropout: float | int = 0.0attention_dropout: float | int = 0.0feat_proj_dropout: float | int = 0.0final_dropout: float | int = 0.1layerdrop: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05apply_spec_augment: bool = Truemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10mask_feature_min_masks: int = 0ctc_loss_reduction: str = 'sum'ctc_zero_infinity: bool = Falseuse_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 768tdnn_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 1500)tdnn_kernel: list[int] | tuple[int, ...] = (5, 3, 3, 1, 1)tdnn_dilation: list[int] | tuple[int, ...] = (1, 2, 3, 1, 1)xvector_output_dim: int = 512pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2add_adapter: bool = Falseadapter_kernel_size: int = 3adapter_stride: int = 2num_adapter_layers: int = 1adapter_act: str = 'relu'use_intermediate_ffn_before_adapter: bool = Falseoutput_hidden_size: int | None = Noneposition_embeddings_type: typing.Optional[typing.Literal['rotary', 'relative', 'relative_key']] = 'relative_key'rotary_embedding_base: int = 10000max_source_positions: int = 5000left_max_position_embeddings: int = 64right_max_position_embeddings: int = 8conv_depthwise_kernel_size: int = 31conformer_conv_dropout: float | int = 0.1 )

매개변수

  • vocab_size (int, 선택 사항) — 모델의 어휘 크기입니다. input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다.
  • hidden_size (int, 선택 사항, 기본값 1024) — 숨겨진 표현의 차원입니다.
  • num_hidden_layers (int, 선택 사항, 기본값 24) — Transformer decoder의 숨겨진 레이어 수.
  • num_attention_heads (int, 선택 사항, 기본값 16) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • intermediate_size (int, 선택 사항, 기본값 4096) — MLP 표현의 차원입니다.
  • feature_projection_input_dim (int, 선택 사항, 기본값 160) — 이 모델의 입력 차원, 즉 SeamlessM4TFeatureExtractor 또는 Wav2Vec2BertProcessor로 입력 오디오를 처리한 후의 차원입니다.
  • hidden_act (str, 선택 사항, 기본값 swish) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열). 예를 들어 "gelu", "relu", "silu" 등이 있습니다.
  • hidden_dropout (Union[float, int], 선택 사항, 기본값 0.0) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 dropout 확률입니다.
  • activation_dropout (Union[float, int], 선택 사항, 기본값 0.0) — 완전 연결 레이어 내부 활성화에 적용할 dropout 비율입니다.
  • attention_dropout (Union[float, int], 선택 사항, 기본값 0.0) — Attention 확률에 적용할 dropout 비율입니다.
  • feat_proj_dropout (float, 선택 사항, 기본값 0.0) — 특성 투영(feature projection)에 적용할 dropout 확률입니다.
  • final_dropout (float, 선택 사항, 기본값 0.1) — Wav2Vec2BertForCTC의 최종 투영 레이어에 적용할 dropout 확률입니다.
  • layerdrop (Union[float, int], 선택 사항, 기본값 0.1) — LayerDrop 확률입니다. 자세한 내용은 [LayerDrop 논문](https://huggingface.co/papers/1909.11556 참조)을 참고하세요.
  • initializer_range (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
  • layer_norm_eps (float, 선택 사항, 기본값 1e-05) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다.
  • apply_spec_augment (bool, 선택 사항, 기본값 True) — feature encoder의 출력에 SpecAugment 데이터 증강을 적용할지 여부. 참고로 SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition를 확인하세요.
  • mask_time_prob (float, 선택 사항, 기본값 0.05) — 시간 축을 따라 마스킹될 모든 특징 벡터의 비율(0에서 1 사이). 마스킹 절차는 mask_time_prob*len(time_axis)/mask_time_length ``independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, *mask_time_prob* should be prob_vector_start*mask_time_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_time_length (int, 선택 사항, 기본값 10) — 시간 축을 따라 벡터가 확장되는 길이.
  • mask_time_min_masks (int, 선택 사항, 기본값 2) — mask_feature_prob와 무관하게, 시간축의 각 시간 단계에서 mask_feature_length 길이의 최소 마스크 수입니다. mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks인 경우에만 관련이 있습니다.
  • mask_feature_prob (float, 선택 사항, 기본값 0.0) — feature 축을 따라 모든 feature 벡터 중 마스킹될 비율(0에서 1 사이). 마스킹 절차는 해당 축에 대해 mask_feature_prob*len(feature_axis)/mask_time_length개의 독립적인 마스크를 생성합니다. 각 feature 벡터가 마스킹될 벡터 스팬의 시작점으로 선택될 확률로부터 추론한다면, mask_feature_prob은 prob_vector_start*mask_feature_length여야 합니다. 겹침(overlap)으로 인해 실제 마스킹된 벡터의 비율이 감소할 수 있습니다. 이는 apply_spec_augment is True인 경우에만 관련이 있습니다.
  • mask_feature_length (int, 선택 사항, 기본값 10) — feature 축을 따라 벡터가 확장되는 길이입니다.
  • mask_feature_min_masks (int, 선택 사항, 기본값 0) — mask_feature_prob와 무관하게, 각 타임스텝마다 feature 축을 따라 생성되는 mask_feature_length 길이의 최소 마스크 수입니다. mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks인 경우에만 관련이 있습니다.
  • ctc_loss_reduction (str, 선택 사항, 기본값 sum) — torch.nn.CTCLoss의 출력에 적용할 reduction 방식을 지정합니다. 학습 시에만 관련이 있습니다.
  • ctc_zero_infinity (bool, 선택 사항, 기본값 False) — torch.nn.CTCLoss의 무한 손실과 관련 그래디언트를 0으로 설정할지 여부입니다. 무한 손실은 주로 입력이 타깃과 정렬될 수 없을 정도로 너무 짧은 경우에 발생합니다. Wav2Vec2BertForCTC 인스턴스를 학습하는 경우에만 관련이 있습니다.
  • use_weighted_layer_sum (bool, 선택 사항, 기본값 False) — 학습된 가중치를 사용하여 레이어 출력의 가중 평균을 사용할지 여부입니다. Wav2Vec2BertForSequenceClassification 인스턴스를 사용하는 경우에만 관련이 있습니다.
  • classifier_proj_size (int, 선택 사항, 기본값 768) — 분류를 위한 토큰 평균 풀링 전 투영의 차원입니다.
  • tdnn_dim (tuple[int] 또는 list[int], 선택 사항, 기본값 (512, 512, 512, 512, 1500)) — XVector 모델의 TDNN 모듈에서 각 1D 컨볼루션 레이어의 출력 채널 수를 정의하는 정수 튜플입니다. tdnn_dim의 길이는 TDNN 레이어의 수를 정의합니다.
  • tdnn_kernel (tuple[int] 또는 list[int], 선택 사항, 기본값 (5, 3, 3, 1, 1)) — XVector 모델의 TDNN 모듈에서 각 1D 합성곱 레이어의 커널 크기를 정의하는 정수 튜플입니다. tdnn_kernel의 길이는 tdnn_dim의 길이와 일치해야 합니다.
  • tdnn_dilation (tuple[int] 또는 list[int], 선택 사항, 기본값 (1, 2, 3, 1, 1)) — XVector 모델의 TDNN 모듈에서 각 1D 합성곱 계층의 dilation factor를 정의하는 정수 튜플입니다. tdnn_dilation의 길이는 tdnn_dim의 길이와 일치해야 합니다.
  • xvector_output_dim (int, 선택 사항, 기본값 512) — XVector 임베딩 벡터의 차원.
  • pad_token_id (int, 선택 사항, 기본값 0) — 어휘에서 패딩에 사용되는 토큰 ID입니다.
  • bos_token_id (int, 선택 사항, 기본값 1) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다.
  • eos_token_id (Union[int, list[int]], 선택 사항, 기본값 2) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다.
  • add_adapter (bool, 선택 사항, 기본값 False) — Wav2Vec2Bert Encoder 위에 convolutional attention network를 쌓을지 여부입니다. SpeechEncoderDecoder 모델의 Wav2Vec2Bert를 warm-start하는 데 매우 유용할 수 있습니다.
  • adapter_kernel_size (int, 선택 사항, 기본값 3) — 어댑터 네트워크의 합성곱 계층의 커널 크기입니다. add_adapter is True인 경우에만 관련이 있습니다.
  • adapter_stride (int, 선택 사항, 기본값 2) — 어댑터 네트워크의 합성곱 계층 스트라이드입니다. add_adapter is True인 경우에만 관련이 있습니다.
  • num_adapter_layers (int, optional, 기본값 1) — 어댑터 네트워크에서 사용할 컨볼루션 레이어의 수입니다. add_adapter is True인 경우에만 관련이 있습니다.
  • adapter_act (str 또는 function, 선택 사항, 기본값 "relu") — 어댑터 레이어에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 문자열인 경우 "gelu", "relu", "selu", "swish", "gelu_new"를 지원합니다.
  • use_intermediate_ffn_before_adapter (bool, 선택 사항, 기본값 False) — Wav2Vec2Bert Encoder 위에 adapter 네트워크 앞에 중간 feed-forward 블록을 쌓을지 여부입니다. add_adapter is True인 경우에만 관련이 있습니다.
  • output_hidden_size (int, 선택) — 인코더 출력 레이어의 차원입니다. 정의되지 않은 경우 기본값은 hidden-size입니다. add_adapter is True일 때만 관련이 있습니다.
  • position_embeddings_type (str, 선택 사항, 기본값은 "relative_key") — 다음 값 중 하나로 지정할 수 있습니다:
  • rotary_embedding_base (int, 선택 사항, 기본값 10000) — "rotary" 위치 임베딩을 사용하는 경우, 임베딩 베이스의 크기를 정의합니다.
  • max_source_positions (int, 선택 사항, 기본값 5000) — "relative" 위치 임베딩을 사용하는 경우, 최대 소스 입력 위치를 정의합니다.
  • left_max_position_embeddings (int, 선택 사항, 기본값 64) — "relative_key"(Shaw) 위치 임베딩을 사용하는 경우, 상대 위치의 왼쪽 클리핑 값을 정의합니다.
  • right_max_position_embeddings (int, 선택 사항, 기본값 8) — "relative_key"(Shaw) 위치 임베딩을 사용하는 경우, 상대 위치의 오른쪽 클리핑 값을 정의합니다.
  • conv_depthwise_kernel_size (int, 선택 사항, 기본값 31) — Conformer 블록의 convolutional depthwise 1D 레이어의 kernel size입니다.
  • conformer_conv_dropout (float, 선택 사항, 기본값 0.1) — Conformer 블록의 모든 합성곱 계층에 적용할 dropout 확률입니다.

이것은 Wav2Vec2 BertModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Wav2Vec2 Bert 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 facebook/w2v-bert-2.0과 유사한 설정이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

>>> from transformers import Wav2Vec2BertConfig, Wav2Vec2BertModel

>>> # Initializing a Wav2Vec2Bert facebook/wav2vec2-bert-rel-pos-large style configuration
>>> configuration = Wav2Vec2BertConfig()

>>> # Initializing a model (with random weights) from the facebook/wav2vec2-bert-rel-pos-large style configuration
>>> model = Wav2Vec2BertModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

Wav2Vec2BertProcessor

클래스 transformers.Wav2Vec2BertProcessor

< >

( feature_extractortokenizer )

매개변수

  • feature_extractor (Wav2Vec2FeatureExtractor) — feature extractor는 필수 입력입니다.
  • tokenizer (Wav2Vec2CTCTokenizer) — 토크나이저는 필수 입력값입니다.

Wav2Vec2BertProcessor를 생성하며, feature extractor와 tokenizer를 단일 processor로 래핑합니다.

Wav2Vec2BertProcessor는 Wav2Vec2FeatureExtractor와 Wav2Vec2CTCTokenizer의 모든 기능을 제공합니다. 자세한 내용은 ~Wav2Vec2FeatureExtractor와 ~Wav2Vec2CTCTokenizer를 참고하세요.

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | None = None**kwargs: *<class 'transformers.models.wav2vec2_bert.processing_wav2vec2_bert.Wav2Vec2BertProcessorKwargs'> ) → BatchEncoding

매개변수

  • audio (Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor]], 선택 사항) — 준비할 오디오 또는 오디오 배치입니다. 각 오디오는 NumPy 배열 또는 PyTorch 텐서일 수 있습니다. NumPy 배열/PyTorch 텐서의 경우, 각 오디오의 shape은 (C, T)여야 하며, 여기서 C는 채널 수, T는 오디오의 샘플 길이입니다.
  • text (Union[str, list[str]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 사전 토큰화된 입력을 전달하는 경우, 배치 입력과의 혼동을 피하기 위해 is_split_into_words=True를 설정하세요.
  • return_tensors (str 또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': NumPy np.ndarray 객체를 반환합니다.
  • **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 TypedDict 클래스를 참조하세요.

반환값

BatchEncoding

다음 필드를 가진 BatchEncoding:

  • input_features — 모델에 입력할 오디오 입력 특징. audio가 None이 아닐 때 반환됩니다.
  • attention_mask — audio가 None가 아닐 때 모델이 주의해야 할 타임스탬프를 지정하는 인덱스 목록. text만 지정된 경우 토큰 어텐션 마스크를 반환합니다.
  • labels — 모델에 입력할 토큰 ID 목록. text와 audio가 모두 None이 아닐 때 반환됩니다.
  • input_ids — 모델에 입력할 토큰 ID 목록. text가 None이 아니고 audio가 None인 경우 반환됩니다.

패딩

< >

( input_features = Nonelabels = None**kwargs )

input_features가 None이 아닌 경우, 이 메서드는 input_features와 kwargs 인수를 SeamlessM4TFeatureExtractor의 pad()로 전달하여 입력 특징을 패딩합니다. labels가 None이 아닌 경우, 이 메서드는 labels와 kwargs 인수를 PreTrainedTokenizer의 pad()로 전달하여 라벨을 패딩합니다. 자세한 내용은 위 두 메서드의 docstring을 참조하세요.

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs )

매개변수

  • pretrained_model_name_or_path (str 또는 os.PathLike) — 다음 중 하나일 수 있습니다:
    • 문자열이며, huggingface.co의 모델 저장소에 호스팅된 사전 학습된 feature_extractor의 model id입니다.
    • save_pretrained() 메서드를 사용하여 feature extractor 파일을 저장한 디렉터리의 경로, 예: ./my_model_directory/.
    • 저장된 feature extractor JSON 파일의 경로, 예: ./my_model_directory/preprocessor_config.json.
  • **kwargs — from_pretrained()와 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained에 함께 전달되는 추가 키워드 인자입니다.

과(와) 연관된 를 초기화합니다.

이 클래스 메서드는 단순히 feature extractor의 from_pretrained(), image processor의 ImageProcessingMixin 및 tokenizer의 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained 메서드를 호출합니다. 자세한 내용은 위 메서드들의 docstring을 참고하세요.

save_pretrained

< >

( save_directorypush_to_hub: bool = False**kwargs )

매개변수

  • save_directory (str 또는 os.PathLike) — feature extractor JSON 파일과 tokenizer 파일이 저장될 디렉터리입니다(존재하지 않는 경우 생성됩니다).
  • push_to_hub (bool, 선택 사항, 기본값 False) — 모델을 저장한 후 Hugging Face 모델 허브에 푸시할지 여부입니다. repo_id를 사용하여 푸시할 저장소를 지정할 수 있으며, 지정하지 않으면 네임스페이스 내 save_directory의 이름이 기본값으로 사용됩니다.
  • kwargs (dict[str, Any], 선택) — push_to_hub() 메서드에 함께 전달되는 추가 키워드 인자입니다.

이 프로세서(feature extractor, tokenizer 등)의 속성을 지정된 디렉터리에 저장하여 from_pretrained() 메서드를 사용해 다시 로드할 수 있도록 합니다.

이 클래스 메서드는 단순히 save_pretrained()와 save_pretrained()를 호출합니다. 자세한 내용은 위 메서드의 docstring을 참고하세요.

batch_decode

< >

( *args**kwargs )

이 메서드는 모든 인수를 PreTrainedTokenizer의 batch_decode()로 전달합니다. 자세한 내용은 해당 메서드의 docstring을 참고하세요.

decode

< >

( *args**kwargs )

이 메서드는 모든 인수를 PreTrainedTokenizer의 decode()로 전달합니다. 자세한 내용은 해당 메서드의 docstring을 참조하세요.

Wav2Vec2BertModel

클래스 transformers.Wav2Vec2BertModel

< >

( config: Wav2Vec2BertConfig )

매개변수

  • config (Wav2Vec2BertConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 기본 Wav2Vec2 Bert 모델입니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_features: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Wav2Vec2BaseModelOutput or tuple(torch.Tensor)

매개변수

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 Wav2Vec2FeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 Wav2Vec2FeatureExtractor.call()를 참조하세요 (Wav2Vec2BertProcessor는 오디오 처리에 Wav2Vec2FeatureExtractor를 사용합니다).
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • mask_time_indices (torch.BoolTensor, shape (batch_size, sequence_length), 선택 사항) — contrastive loss를 위해 추출된 features를 mask할 인덱스입니다. training mode일 때, 모델은 config.proj_codevector_dim 공간에서 mask된 추출 features를 예측하도록 학습합니다.

반환값

Wav2Vec2BaseModelOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 Wav2Vec2BaseModelOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(Wav2Vec2BertConfig)과 입력에 따라 다양한 요소를 포함합니다.

Wav2Vec2BertModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.

  • extract_features (torch.Tensor, shape (batch_size, sequence_length, conv_dim[-1])) — 모델의 마지막 컨볼루션 계층에서 추출된 특징 벡터의 시퀀스.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — 임베딩의 출력 하나와 각 레이어의 출력 하나씩을 포함하는 torch.Tensor의 튜플로, shape는 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 초기 임베딩 출력을 더한 값.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

Wav2Vec2BertForCTC

class transformers.Wav2Vec2BertForCTC

< >

( config: Wav2Vec2BertConfigtarget_lang: str | None = None )

매개변수

  • config (Wav2Vec2BertConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
  • target_lang (str, 선택 사항) — 어댑터 가중치의 언어 ID입니다. 어댑터 가중치는 adapter..safetensors 또는 adapter..bin 형식으로 저장됩니다. 어댑터를 사용하는 UniSpeechSatForCTC 인스턴스를 사용할 때만 관련이 있습니다. 기본값은 ‘eng’입니다.

Connectionist Temporal Classification(CTC)을 위해 language modeling 헤드를 최상단에 배치한 Wav2Vec2Bert 모델입니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_features: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutput or tuple(torch.Tensor)

매개변수

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 Wav2Vec2FeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 Wav2Vec2FeatureExtractor.call()를 참조하세요 (Wav2Vec2BertProcessor는 오디오 처리에 Wav2Vec2FeatureExtractor를 사용합니다).
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • labels (torch.LongTensor, shape (batch_size, target_length), 선택 사항) — Connectionist temporal classification에 사용할 라벨입니다. target_length은 출력 logits의 시퀀스 길이보다 작거나 같아야 합니다. 인덱스는 [-100, 0, ..., config.vocab_size - 1] 범위에서 선택됩니다. -100으로 설정된 모든 라벨은 무시(마스크)되며, 손실은 [0, ..., config.vocab_size - 1] 범위의 라벨에 대해서만 계산됩니다.

반환값

CausalLMOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 CausalLMOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우, 구성(Wav2Vec2BertConfig)과 입력에 따라 다양한 요소를 포함합니다.

Wav2Vec2BertForCTC의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — 언어 모델링 손실(다음 토큰 예측용).

  • logits (torch.Tensor, shape (batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> from transformers import AutoProcessor, Wav2Vec2BertForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForCTC.from_pretrained("facebook/w2v-bert-2.0")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...

Wav2Vec2BertForSequenceClassification

class transformers.Wav2Vec2BertForSequenceClassification

< >

( config: Wav2Vec2BertConfig )

매개변수

  • config (Wav2Vec2BertConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

Wav2Vec2Bert 모델은 …과 같은 작업을 위해 상단에 시퀀스 분류 헤드(풀링된 출력 위에 적용되는 선형 레이어)를 사용합니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_features: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)

매개변수

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 Wav2Vec2FeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 Wav2Vec2FeatureExtractor.call()를 참조하세요 (Wav2Vec2BertProcessor는 오디오 처리에 Wav2Vec2FeatureExtractor를 사용합니다).
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • labels (torch.LongTensor, shape (batch_size,), 선택 사항) — 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는 [0, ..., config.num_labels - 1] 범위에 있어야 합니다. config.num_labels == 1인 경우 회귀 손실(Mean-Square loss)이 계산되고, config.num_labels > 1인 경우 분류 손실(Cross-Entropy)이 계산됩니다.

반환값

SequenceClassifierOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 SequenceClassifierOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(Wav2Vec2BertConfig)과 입력에 따라 다양한 요소로 구성됩니다.

Wav2Vec2BertForSequenceClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — 분류 (또는 config.num_labels==1인 경우 회귀) 손실.

  • logits (torch.Tensor, shape (batch_size, config.num_labels)) — SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

단일 레이블 분류의 예시:

>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2BertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained("facebook/w2v-bert-2.0")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained("facebook/w2v-bert-2.0", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

다중 레이블 분류의 예시:

>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2BertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained("facebook/w2v-bert-2.0", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained(
...     "facebook/w2v-bert-2.0", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

Wav2Vec2BertForAudioFrameClassification

클래스 transformers.Wav2Vec2BertForAudioFrameClassification

< >

( config: Wav2Vec2BertConfig )

매개변수

  • config (Wav2Vec2BertConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

Wav2Vec2 Bert 모델은 화자 분리(Speaker Diarization)와 같은 작업을 위해 프레임 분류 헤드가 위에 추가된 형태입니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_features: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)

매개변수

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 Wav2Vec2FeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 Wav2Vec2FeatureExtractor.call()를 참조하세요 (Wav2Vec2BertProcessor는 오디오 처리에 Wav2Vec2FeatureExtractor를 사용합니다).
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • labels (torch.LongTensor, shape (batch_size,), 선택 사항) — 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는 [0, ..., config.num_labels - 1] 범위에 있어야 합니다. config.num_labels == 1인 경우 회귀 손실(Mean-Square loss)이 계산되고, config.num_labels > 1인 경우 분류 손실(Cross-Entropy)이 계산됩니다.

반환값

TokenClassifierOutput 또는 tuple(torch.Tensor)

torch.Tensor의 TokenClassifierOutput 또는 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(Wav2Vec2BertConfig)과 입력에 따라 다양한 요소를 포함합니다.

Wav2Vec2BertForAudioFrameClassification의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — 분류 손실.

  • logits (torch.Tensor, shape (batch_size, sequence_length, config.num_labels)) — SoftMax 적용 전 분류 점수.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> from transformers import AutoFeatureExtractor, Wav2Vec2BertForAudioFrameClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForAudioFrameClassification.from_pretrained("facebook/w2v-bert-2.0")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> probabilities = torch.sigmoid(logits[0])
>>> # labels is a one-hot array of shape (num_frames, num_speakers)
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()
...

Wav2Vec2BertForXVector

class transformers.Wav2Vec2BertForXVector

< >

( config: Wav2Vec2BertConfig )

매개변수

  • config (Wav2Vec2BertConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

Wav2Vec2Bert 모델은 화자 인증과 같은 작업을 위해 상단에 XVector 특징 추출 헤드를 갖춘 모델입니다.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( input_features: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → XVectorOutput or tuple(torch.Tensor)

매개변수

  • input_features (torch.Tensor, shape (batch_size, sequence_length, feature_dim), 선택 사항) — 입력 오디오 특징에 해당하는 텐서입니다. 오디오 특징은 Wav2Vec2FeatureExtractor를 사용하여 얻을 수 있습니다. 자세한 내용은 Wav2Vec2FeatureExtractor.call()를 참조하세요 (Wav2Vec2BertProcessor는 오디오 처리에 Wav2Vec2FeatureExtractor를 사용합니다).
  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • labels (torch.LongTensor, shape (batch_size,), 선택 사항) — 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는 [0, ..., config.num_labels - 1] 범위에 있어야 합니다. config.num_labels == 1인 경우 회귀 손실(Mean-Square loss)이 계산되고, config.num_labels > 1인 경우 분류 손실(Cross-Entropy)이 계산됩니다.

반환값

XVectorOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 XVectorOutput입니다. return_dict=False가 전달되었거나 config.return_dict=False인 경우, 구성(Wav2Vec2BertConfig)과 입력에 따라 다양한 요소를 포함합니다.

Wav2Vec2BertForXVector의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, shape (1,), 선택 사항, labels이 제공될 때 반환됨) — 분류 손실.

  • logits (torch.Tensor, shape (batch_size, config.xvector_output_dim)) — AMSoftmax 적용 전 분류 hidden states.

  • 임베딩 (torch.Tensor, shape (batch_size, config.xvector_output_dim)) — 벡터 유사도 기반 검색에 사용되는 발화 임베딩입니다.

  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — 임베딩의 출력 하나와 각 레이어의 출력 하나씩을 포함하는 torch.Tensor의 튜플로, shape는 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 초기 임베딩 출력을 더한 값.

  • attentions (tuple(torch.Tensor), 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

>>> from transformers import AutoFeatureExtractor, Wav2Vec2BertForXVector
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForXVector.from_pretrained("facebook/w2v-bert-2.0")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
...     embeddings = model(**inputs).embeddings

>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()

>>> # the resulting embeddings can be used for cosine similarity-based retrieval
>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7  # the optimal threshold is dataset-dependent
>>> if similarity < threshold:
...     print("Speakers are not the same!")
>>> round(similarity.item(), 2)
...
Update on GitHub