File size: 1,708 Bytes
8625430
 
 
 
 
41557b5
 
29bd054
9d915ef
29bd054
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9d915ef
29bd054
9d915ef
29bd054
 
9d915ef
29bd054
 
 
 
 
9d915ef
 
 
 
 
29bd054
41557b5
29bd054
 
 
 
 
4da3561
 
29bd054
9d915ef
29bd054
 
 
 
9d915ef
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
from flask import Flask, request, render_template, redirect, url_for
import os
from moviepy.editor import VideoFileClip
import whisper

app = Flask(__name__)

# Load the Whisper model
model = whisper.load_model("base")

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload_video():
    if 'video' not in request.files:
        return redirect(url_for('index'))

    video_file = request.files['video']
    if video_file.filename == '':
        return redirect(url_for('index'))

    # Save the video file
    video_path = os.path.join('uploads', video_file.filename)
    video_file.save(video_path)

    try:
        # Extract audio from the video
        audio_path = extract_audio(video_path)
        # Transcribe the audio
        transcript = transcribe_audio(audio_path)
    except Exception as e:
        return f"Error: {e}"

    return render_template('result.html', transcript=transcript)

def extract_audio(video_path):
    audio_path = os.path.splitext(video_path)[0] + ".wav"
    try:
        video = VideoFileClip(video_path)
        video.audio.write_audiofile(audio_path)
    except Exception as e:
        raise RuntimeError(f"Error extracting audio: {e}")
    return audio_path

def transcribe_audio(audio_path):
    if not os.path.exists(audio_path):
        raise FileNotFoundError(f"Audio file not found at {audio_path}")

    try:
        result = model.transcribe(audio_path)
        return result["text"]
    except Exception as e:
        raise RuntimeError(f"Error during transcription: {e}")

if __name__ == '__main__':
    if not os.path.exists('uploads'):
        os.makedirs('uploads')
    app.run(debug=True)