File size: 4,191 Bytes
b4cbbe2
 
 
ed343f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b4cbbe2
 
ed343f7
a3d265e
ed343f7
b4cbbe2
 
 
ed343f7
b4cbbe2
 
 
 
 
ed343f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b4cbbe2
 
ed343f7
b4cbbe2
 
 
0e0471b
ed343f7
 
0e0471b
ed343f7
 
f2021d6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#uvicorn app:app --host 0.0.0.0 --port 8000 --reload


# from fastapi import FastAPI
# from transformers import WhisperProcessor, WhisperForConditionalGeneration
# import librosa
# import uvicorn

# app = FastAPI()

# processor = WhisperProcessor.from_pretrained("openai/whisper-small")
# model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")
# model.config.forced_decoder_ids = None

# audio_file_path = "output.mp3"

# audio_data, _ = librosa.load(audio_file_path, sr=16000)

# @app.get("/")
# def transcribe_audio():
#         input_features = processor(audio_data.tolist(), return_tensors="pt").input_features
        
#         predicted_ids = model.generate(input_features)
#         transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
        
#         return {"transcription": transcription[0]}


# if __name__ == "__main__":
#     import uvicorn
#     uvicorn.run(app, host="0.0.0.0", port=8000)


# if __name__=='__main__':
#     uvicorn.run('main:app', reload=True)




#uvicorn app:app --host 0.0.0.0 --port 8000 --reload
#curl -X GET "http://localhost:8000/?text=I%20like%20Apples"
#http://localhost:8000/?text=I%20like%20Apples








# from fastapi import FastAPI
# from transformers import WhisperProcessor, WhisperForConditionalGeneration
# import librosa
# import uvicorn

# app = FastAPI()

# # Load model and processor
# processor = WhisperProcessor.from_pretrained("openai/whisper-small")
# model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")
# model.config.forced_decoder_ids = None

# # Path to your audio file
# audio_file_path = "/home/pranjal/Downloads/output.mp3"

# # Read the audio file
# audio_data, _ = librosa.load(audio_file_path, sr=16000)

# @app.get("/")
# def transcribe_audio():
#         # Process the audio data using the Whisper processor
#         input_features = processor(audio_data.tolist(), return_tensors="pt").input_features
        
#         # Generate transcription
#         predicted_ids = model.generate(input_features)
#         transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
        
#         return {"transcription": transcription[0]}

# if __name__ == "__main__":
#     import uvicorn
#     uvicorn.run(app, host="0.0.0.0", port=8000)


# if __name__=='__app__':
#     uvicorn.run('main:app', reload=True)





from fastapi import FastAPI, UploadFile, File
from transformers import WhisperProcessor, WhisperForConditionalGeneration
import librosa
from fastapi.responses import HTMLResponse
import uvicorn
import io

app = FastAPI()

# Load model and processor
processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-small")
model.config.forced_decoder_ids = None

@app.get("/")
def read_root():
    html_form = """
    <html>
        <body>
            <h2>ASR Transcription</h2>
            <form action="/transcribe" method="post" enctype="multipart/form-data">
                <label for="audio_file">Upload an audio file (MP3 or WAV):</label>
                <input type="file" id="audio_file" name="audio_file" accept=".mp3, .wav" required><br><br>
                <input type="submit" value="Transcribe">
            </form>
        </body>
    </html>
    """
    return HTMLResponse(content=html_form, status_code=200)

@app.post("/transcribe")
async def transcribe_audio(audio_file: UploadFile):
    try:
        # Read the uploaded audio file
        audio_data = await audio_file.read()
        
        # Process the audio data using the Whisper processor
        audio_data, _ = librosa.load(io.BytesIO(audio_data), sr=16000)
        input_features = processor(audio_data.tolist(), return_tensors="pt").input_features
        
        # Generate transcription
        predicted_ids = model.generate(input_features)
        transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
        
        return {"transcription": transcription[0]}
    except Exception as e:
        return {"error": str(e)}

# if __name__ == "__app__":
#     uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)