arham061 commited on
Commit
19b10bb
1 Parent(s): eb87784

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +114 -0
app.py ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer
3
+ from urllib.request import urlopen
4
+ from io import BytesIO
5
+ import soundfile as sf
6
+ import numpy as np
7
+
8
+ # Load the TTS model from the Hugging Face Hub
9
+ model_name = "arham061/speecht5_finetuned_voxpopuli_nl" # Replace with your actual model name
10
+ model = Wav2Vec2ForCTC.from_pretrained(model_name)
11
+ tokenizer = Wav2Vec2Tokenizer.from_pretrained(model_name)
12
+
13
+ # Buckwalter to Unicode mapping
14
+ buck2uni = {
15
+ u"\u0627": "A",
16
+ u"\u0675": "A",
17
+ u"\u0673": "A",
18
+ u"\u0630": "A",
19
+ u"\u0622": "AA",
20
+ u"\u0628": "B",
21
+ u"\u067E": "P",
22
+ u"\u062A": "T",
23
+ u"\u0637": "T",
24
+ u"\u0679": "T",
25
+ u"\u062C": "J",
26
+ u"\u0633": "S",
27
+ u"\u062B": "S",
28
+ u"\u0635": "S",
29
+ u"\u0686": "CH",
30
+ u"\u062D": "H",
31
+ u"\u0647": "H",
32
+ u"\u0629": "H",
33
+ u"\u06DF": "H",
34
+ u"\u062E": "KH",
35
+ u"\u062F": "D",
36
+ u"\u0688": "D",
37
+ u"\u0630": "Z",
38
+ u"\u0632": "Z",
39
+ u"\u0636": "Z",
40
+ u"\u0638": "Z",
41
+ u"\u068E": "Z",
42
+ u"\u0631": "R",
43
+ u"\u0691": "R",
44
+ u"\u0634": "SH",
45
+ u"\u063A": "GH",
46
+ u"\u0641": "F",
47
+ u"\u06A9": "K",
48
+ u"\u0642": "K",
49
+ u"\u06AF": "G",
50
+ u"\u0644": "L",
51
+ u"\u0645": "M",
52
+ u"\u0646": "N",
53
+ u"\u06BA": "N",
54
+ u"\u0648": "O",
55
+ u"\u0649": "Y",
56
+ u"\u0626": "Y",
57
+ u"\u06CC": "Y",
58
+ u"\u06D2": "E",
59
+ u"\u06C1": "H",
60
+ u"\u064A": "E",
61
+ u"\u06C2": "AH",
62
+ u"\u06BE": "H",
63
+ u"\u0639": "A",
64
+ u"\u0643": "K",
65
+ u"\u0621": "A",
66
+ u"\u0624": "O",
67
+ u"\u060C": "", # separator ulta comma
68
+ }
69
+
70
+ def transString(string, reverse=0):
71
+ """Given a Unicode string, transliterate into Buckwalter. To go from
72
+ Buckwalter back to Unicode, set reverse=1"""
73
+ for k, v in buck2uni.items():
74
+ if not reverse:
75
+ string = string.replace(k, v)
76
+ else:
77
+ string = string.replace(v, k)
78
+ return string
79
+
80
+
81
+ def generate_audio(text):
82
+ # Convert input text to Roman Urdu
83
+ roman_urdu = transString(text)
84
+
85
+ # Tokenize the input text
86
+ inputs = tokenizer(roman_urdu, return_tensors="pt").input_values
87
+
88
+ # Generate speech from the model
89
+ with torch.no_grad():
90
+ logits = model(inputs).logits
91
+
92
+ # Convert logits to audio waveform
93
+ predicted_ids = torch.argmax(logits, dim=-1)
94
+ audio = tokenizer.decode(predicted_ids[0], skip_special_tokens=True)
95
+
96
+ return audio
97
+
98
+
99
+ # Example usage
100
+ def main():
101
+ # Get input text in Urdu
102
+ input_text_urdu = input("Enter text in Urdu: ")
103
+
104
+ # Generate audio
105
+ audio_output = generate_audio(input_text_urdu)
106
+
107
+ # Save audio as a .wav file
108
+ sf.write("output.wav", audio_output, samplerate=22050)
109
+
110
+ print("Audio generated and saved as 'output.wav'")
111
+
112
+
113
+ if __name__ == "__main__":
114
+ main()