Views
No views yet
1#!/usr/bin/env python3
2import torch
3from transformers import AutoProcessor, CsmForConditionalGeneration
4
5MODEL_ID = "ArttuPakarinen/sesame-csm-FIN-parlament-full-finetune"
6BASE_ID = "sesame/csm-1b" # processor comes from the base model
7
8device = "cuda" if torch.cuda.is_available() else "cpu"
9
10# Disable flash / mem-efficient SDPA if your setup has issues with them
11if hasattr(torch.backends.cuda, "sdp_kernel"):
12 torch.backends.cuda.sdp_kernel(
13 enable_flash=False,
14 enable_math=True,
15 enable_mem_efficient=False,
16 )
17
18processor = AutoProcessor.from_pretrained(BASE_ID)
19
20model = CsmForConditionalGeneration.from_pretrained(
21 MODEL_ID,
22 torch_dtype="auto",
23 low_cpu_mem_usage=True,
24 attn_implementation="eager",
25).to(device)
26
27model.eval()
28model.config.use_cache = True
29try:
30 model.generation_config.attn_implementation = "eager"
31except Exception:
32 pass
33
34text = "Ihanaa, kun voi generoida ääntä!"
35conversation = [{"role": "0", "content": [{"type": "text", "text": text}]}]
36
37raw = processor.apply_chat_template(
38 conversation,
39 tokenize=True,
40 add_generation_prompt=True,
41 return_tensors="pt",
42 return_dict=True,
43)
44
45# attention_mask -> bool (some setups expect this)
46inputs = {
47 k: (v.to(device).to(torch.bool) if k == "attention_mask" else v.to(device))
48 for k, v in raw.items()
49}
50
51with torch.no_grad(), torch.amp.autocast("cuda", enabled=(device == "cuda")):
52 audio = model.generate(
53 **inputs,
54 output_audio=True,
55 use_cache=True,
56 max_new_tokens=600,
57 do_sample=True,
58 temperature=0.8,
59 top_p=0.95,
60 pad_token_id=processor.tokenizer.pad_token_id,
61 eos_token_id=processor.tokenizer.eos_token_id,
62 )
63
64processor.save_audio(audio, "tulos.wav")
65print("OK: tulos.wav")
66
67