MOSS-Transcribe-Diarize / configuration_moss_transcribe_diarize.py
zylin12's picture
Upload MOSS-Transcribe-Diarize pretrained model files
0844c4a verified
Raw
History Blame
2.66 kB
from transformers import PretrainedConfig
from transformers.models.qwen3.configuration_qwen3 import Qwen3Config
from transformers.models.whisper.configuration_whisper import WhisperConfig
class MossTranscribeDiarizeConfig(PretrainedConfig):
"""Configuration for MOSS-Transcribe-Diarize: Qwen3 text backbone + Whisper audio encoder."""
model_type = "moss_transcribe_diarize"
sub_configs = {"text_config": Qwen3Config, "audio_config": WhisperConfig}
keys_to_ignore_at_inference = ["past_key_values"]
def __init__(
self,
text_config=None,
audio_config=None,
audio_token_id: int = 151671,
audio_merge_size: int = 4,
adaptor_input_dim: int | None = None,
tie_word_embeddings: bool = True,
**kwargs,
):
if text_config is None:
text_config = Qwen3Config(
vocab_size=151936,
hidden_size=1024,
intermediate_size=3072,
num_hidden_layers=28,
num_attention_heads=16,
num_key_value_heads=8,
head_dim=128,
max_position_embeddings=40960,
tie_word_embeddings=tie_word_embeddings,
rope_theta=1_000_000.0,
layer_types=["full_attention"] * 28,
)
elif isinstance(text_config, dict):
text_config = self.sub_configs["text_config"](**text_config)
if audio_config is None:
audio_config = WhisperConfig(
num_mel_bins=80,
d_model=1024,
encoder_layers=24,
encoder_attention_heads=16,
encoder_ffn_dim=4096,
max_source_positions=1500,
dropout=0.0,
attention_dropout=0.0,
activation_dropout=0.0,
activation_function="gelu",
encoder_layerdrop=0.0,
scale_embedding=False,
)
elif isinstance(audio_config, dict):
audio_config = self.sub_configs["audio_config"](**audio_config)
text_config.tie_word_embeddings = tie_word_embeddings
if not getattr(text_config, "layer_types", None):
text_config.layer_types = ["full_attention"] * text_config.num_hidden_layers
self.text_config = text_config
self.audio_config = audio_config
self.audio_token_id = audio_token_id
self.audio_merge_size = audio_merge_size
self.adaptor_input_dim = adaptor_input_dim or audio_config.d_model * audio_merge_size
super().__init__(tie_word_embeddings=tie_word_embeddings, **kwargs)