Views
No views yet
facebook/seamless-m4t-v2-large, containing only T2ST and T2TT components.Original Model: facebook/seamless-m4t-v2-largeOfficial Documentation: SeamlessM4T-v2 Documentation
text_encoder: Text encoder (shared by T2TT and T2ST)text_decoder + lm_head: Text decoder (T2TT)t2u_model: Text-to-unit encoder-decoder (T2ST, contains t2u_encoder and t2u_decoder)vocoder: HiFi-GAN vocoder, includes 200 speaker embeddings (T2ST)shared.weight: Shared word embeddingslang_embed: Language embeddings1from transformers import SeamlessM4Tv2Model, AutoProcessor
2
3# Load model
4model = SeamlessM4Tv2Model.from_pretrained("jaman21/seamless-m4t-v2-t2tt-t2st")
5processor = AutoProcessor.from_pretrained("jaman21/seamless-m4t-v2-t2tt-t2st")
6
7# Translate text
8text_inputs = processor(text="Hello, how are you?", src_lang="eng", return_tensors="pt")
9output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
10translated_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
11print(translated_text) # "Bonjour, comment allez-vous?"1import torchaudio
2
3# Translate text to speech
4text_inputs = processor(text="Hello world", src_lang="eng", return_tensors="pt")
5audio_array = model.generate(**text_inputs, tgt_lang="cmn", generate_speech=True)[0].cpu().numpy().squeeze()
6
7# Save audio (sample rate: 16000 Hz)
8torchaudio.save("output.wav", audio_array, 16000)1# Use different speaker IDs (0-199) to get different voice characteristics
2text_inputs = processor(text="Good morning!", src_lang="eng", return_tensors="pt")
3
4# Speaker 0 - default voice (pretrained)
5audio_spk0 = model.generate(**text_inputs, tgt_lang="spa", generate_speech=True, speaker_id=0)
6
7# Speaker 5 - different voice (pretrained)
8audio_spk5 = model.generate(**text_inputs, tgt_lang="spa", generate_speech=True, speaker_id=5)
9
10# Speaker 42 - another voice option (pretrained)
11audio_spk42 = model.generate(**text_inputs, tgt_lang="spa", generate_speech=True, speaker_id=42)
12
13# Note: Different speaker_id may have different effects in different target languages
14# Try values between 0-199 to find the voice that best suits your use case1# Generate both translated text and speech in one call
2text_inputs = processor(text="How can I help you?", src_lang="eng", return_tensors="pt")
3
4# Set return_intermediate_token_ids=True to get both outputs
5outputs = model.generate(
6 **text_inputs,
7 tgt_lang="deu",
8 generate_speech=True,
9 return_intermediate_token_ids=True
10)
11
12# Extract text
13translated_text_tokens = outputs[1] # Text tokens
14translated_text = processor.decode(translated_text_tokens[0].tolist(), skip_special_tokens=True)
15
16# Extract audio
17audio_waveform = outputs[0].cpu().numpy().squeeze()
18
19print(f"Translated text: {translated_text}")
20print(f"Audio shape: {audio_waveform.shape}")1# Beam search for better quality (slower)
2text_inputs = processor(text="The quick brown fox jumps", src_lang="eng", return_tensors="pt")
3outputs = model.generate(
4 **text_inputs,
5 tgt_lang="jpn",
6 generate_speech=False,
7 num_beams=5, # Use beam search
8 max_new_tokens=256,
9 early_stopping=True
10)
11
12# Sampling for more diverse output
13outputs = model.generate(
14 **text_inputs,
15 tgt_lang="kor",
16 generate_speech=False,
17 do_sample=True, # Enable sampling
18 top_k=50,
19 top_p=0.95,
20 temperature=0.8 # 0.0-1.0: lower is more deterministic, higher is more random (affects translation quality)
21)1# Process multiple texts at once
2texts = [
3 "Hello, how are you?",
4 "What is your name?",
5 "Nice to meet you!"
6]
7
8text_inputs = processor(text=texts, src_lang="eng", return_tensors="pt", padding=True)
9output_tokens = model.generate(**text_inputs, tgt_lang="ita", generate_speech=False)
10
11# Decode all outputs
12translations = processor.batch_decode(output_tokens, skip_special_tokens=True)
13for orig, trans in zip(texts, translations):
14 print(f"{orig} -> {trans}")1text_inputs = processor(text="Translate this sentence", src_lang="eng", return_tensors="pt")
2
3# Higher quality but more computationally expensive
4high_quality_output = model.generate(
5 **text_inputs,
6 tgt_lang="rus",
7 generate_speech=True,
8 speaker_id=10,
9 num_beams=5, # Beam search
10 max_new_tokens=512, # Allow longer output
11 length_penalty=1.0, # No length penalty
12 early_stopping=True,
13 use_cache=True # Accelerate generation
14)
15
16# Faster generation speed, acceptable quality
17fast_output = model.generate(
18 **text_inputs,
19 tgt_lang="rus",
20 generate_speech=True,
21 speaker_id=10,
22 num_beams=1, # Greedy decoding for better translation quality (slower)
23 max_new_tokens=256,
24 use_cache=True
25)1import torch
2
3# Move model to GPU if available
4device = "cuda" if torch.cuda.is_available() else "cpu"
5model = model.to(device)
6
7# Process inputs on the same device
8text_inputs = processor(text="Hello", src_lang="eng", return_tensors="pt")
9text_inputs = {k: v.to(device) for k, v in text_inputs.items()}
10
11# Generate
12with torch.inference_mode(): # More efficient than torch.no_grad()
13 outputs = model.generate(**text_inputs, tgt_lang="cmn", generate_speech=True)