Views
No views yet
facebook/mms-tts-sna checkpoint.torchtransformerssoundfilefastapiuvicornpip install torch transformers soundfile fastapi uvicornrun_tts.py:1import torch
2import soundfile as sf
3from transformers import AutoTokenizer, VitsModel
4
5MODEL_ID = "manassehzw/sna-tts-v1"
6
7text = "Mangwanani. Ndamuka zvakanaka nhasi."
8
9tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
10model = VitsModel.from_pretrained(MODEL_ID)
11
12device = "cuda" if torch.cuda.is_available() else "cpu"
13model = model.to(device)
14model.eval()
15
16inputs = tokenizer(text, return_tensors="pt").to(device)
17
18with torch.no_grad():
19 output = model(**inputs).waveform
20
21waveform = output.squeeze().cpu().numpy()
22
23sf.write("shona_tts.wav", waveform, model.config.sampling_rate)
24
25print("Saved audio to shona_tts.wav")python run_tts.pyshona_tts.wavapi.py:1import io
2
3import torch
4import soundfile as sf
5from fastapi import FastAPI
6from fastapi.responses import StreamingResponse
7from pydantic import BaseModel
8from transformers import AutoTokenizer, VitsModel
9
10MODEL_ID = "manassehzw/sna-tts-v1"
11
12app = FastAPI(title="Shona MMS TTS API")
13
14device = "cuda" if torch.cuda.is_available() else "cpu"
15
16tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
17model = VitsModel.from_pretrained(MODEL_ID)
18model = model.to(device)
19model.eval()
20
21
22class TTSRequest(BaseModel):
23 text: str
24
25
26@app.post("/tts")
27def generate_speech(request: TTSRequest):
28 inputs = tokenizer(request.text, return_tensors="pt").to(device)
29
30 with torch.no_grad():
31 waveform = model(**inputs).waveform
32
33 audio = waveform.squeeze().cpu().numpy()
34
35 buffer = io.BytesIO()
36 sf.write(buffer, audio, model.config.sampling_rate, format="WAV")
37 buffer.seek(0)
38
39 return StreamingResponse(
40 buffer,
41 media_type="audio/wav",
42 headers={
43 "Content-Disposition": "attachment; filename=shona_tts.wav"
44 },
45 )uvicorn api:app --host 0.0.0.0 --port 80001curl -X POST "http://localhost:8000/tts" \
2 -H "Content-Type: application/json" \
3 -d '{"text": "Mangwanani. Ndamuka zvakanaka nhasi."}' \
4 --output shona_tts.wavshona_tts.wavhttp://localhost:8000/docs