dieumercimvemba commited on
Commit
b48943d
·
verified ·
1 Parent(s): 9219345

Update data/generate_audio.py

Browse files
Files changed (1) hide show
  1. data/generate_audio.py +32 -15
data/generate_audio.py CHANGED
@@ -1,30 +1,47 @@
 
1
  import sys
2
  import torch
3
  import soundfile as sf
4
  from transformers import VitsModel, AutoTokenizer
5
 
6
- # Le texte est passé en argument de ligne de commande
7
- text = sys.argv[1]
 
 
 
8
 
9
- # Charger le modèle et le tokenizer (utiliser un modèle léger et rapide)
10
- # Vous pouvez choisir un autre modèle si vous préférez une voix différente
11
- model = VitsModel.from_pretrained("facebook/mms-tts-fra")
12
- tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-fra")
13
 
14
- # Utiliser le GPU si disponible (pour la vitesse)
15
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
 
 
 
 
 
 
 
 
 
16
  model.to(device)
17
 
18
- # 1. Tokenisation du texte
19
  inputs = tokenizer(text, return_tensors="pt").to(device)
20
 
21
- # 2. Génération de la parole
22
- with torch.no_grad():
23
- output = model(**inputs).waveform.float()
 
 
 
24
 
25
- # 3. Sauvegarder l'audio
26
- # L'audio est sauvegardé dans le format WAV nécessaire au nœud FFmpeg suivant
27
  output_file = "generated_audio.wav"
 
28
  sf.write(output_file, output.cpu().numpy(), model.config.sampling_rate)
29
 
30
- print(f"Audio generated successfully: {output_file}")
 
 
 
1
+ # Fichier: /data/generate_audio.py
2
  import sys
3
  import torch
4
  import soundfile as sf
5
  from transformers import VitsModel, AutoTokenizer
6
 
7
+ # 1. Vérifie si le texte est fourni en argument
8
+ if len(sys.argv) < 2:
9
+ # Affiche l'erreur sur la sortie d'erreur (stderr) pour n8n
10
+ print("Usage: python3 generate_audio.py \"Votre texte ici\"", file=sys.stderr)
11
+ sys.exit(1)
12
 
13
+ # Le premier argument est le texte à synthétiser
14
+ # Nous utilisons une substitution simple pour les guillemets internes
15
+ text = sys.argv[1].replace('"', '')
 
16
 
17
+ # 2. Charger le modèle et le tokenizer (TTS Français)
18
+ # Utilisation du CPU par défaut pour les Spaces gratuits
19
+ try:
20
+ model = VitsModel.from_pretrained("facebook/mms-tts-fra")
21
+ tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-fra")
22
+ except Exception as e:
23
+ print(f"Erreur de chargement du modèle : {e}", file=sys.stderr)
24
+ sys.exit(1)
25
+
26
+ # Définir l'appareil (CPU uniquement)
27
+ device = torch.device("cpu")
28
  model.to(device)
29
 
30
+ # 3. Génération de l'audio
31
  inputs = tokenizer(text, return_tensors="pt").to(device)
32
 
33
+ try:
34
+ with torch.no_grad():
35
+ output = model(**inputs).waveform.float()
36
+ except Exception as e:
37
+ print(f"Erreur de génération du waveform : {e}", file=sys.stderr)
38
+ sys.exit(1)
39
 
40
+ # 4. Sauvegarde de l'audio dans le répertoire de travail /data
 
41
  output_file = "generated_audio.wav"
42
+ # Utiliser output_file seulement (car /data est déjà le WORKDIR)
43
  sf.write(output_file, output.cpu().numpy(), model.config.sampling_rate)
44
 
45
+ # 5. Imprimer le chemin complet du fichier (utile pour n8n)
46
+ # Nous retournons le chemin d'accès au fichier pour les nœuds suivants
47
+ print(f"/data/{output_file}")