Pre-requisites:
- Python 3 or higher.
- Flask
- Html and CSS
- Editor - VSCode / PyCharm
Part 1: Dependencies Installation
Open terminal and install the following dependencies.
Commands :
pip install flask
pip install SpeechRecognition
Part 2: Setting-Up Project
Now create a folder give it anyname. Here, I have given folder name as Flaskproject.
Now, open the empty folder in VSCode or PyCharm IDE(I preferred VSCode).
Inside the empty folder we have to create a python file (app.py), a templates directory and static directory and inside static directory create styles directory.
Part 3: Coding:
- Open the app.py file and enter the following code:
Code app.py
:
from flask import Flask, render_template , request , redirect import speech_recognition as sr app = Flask(__name__) @app.route("/", methods=["GET","POST"]) def index(): transcript = '' if request.method == "POST": print("FORM DATA RECEIVED") if "file" not in request.files: return redirect(request.url) file = request.files["file"] if file.filename == "": return redirect(request.url) if file: recognizer = sr.Recognizer() wavfile = sr.AudioFile(file) with wavfile as source: data = recognizer.record(source) transcript = recognizer.recognize_google(data, key=None) return render_template('index.html' , transcript = transcript) if __name__ == " main ": app.run(debug=True, threaded=True)
2.Create index.html file in templates directory:
Code index.html
:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>FlaskProject - AudiotoText</title> <link rel="stylesheet" href="{{url_for('static', filename='styles/style.css')}}"> </head> <body> <header>FlaskCaption</header> <div id="mainContainer"> <h2>Upload Audio File</h2> <form method="post" enctype="multipart/form-data"> <input type="file" name="file" id="fileinput"> <br> <input type="submit" id="submitButton" value="Process"/> </form> {% if transcript != "" %} <div class="speechTranscriptContainer"> <h1>Transcripted Text</h1> <p>{{transcript}}</p> </div> {% endif %} </div> </body> </html>
3.Create a styles.css file inside static/styles directory:
Code style.css
:
body{ margin: 0; padding: 0; background-color: aliceblue; } h1, p , input{ font-family: cursive; } header{ display: flex; justify-content: center; font-size: 50px; font-family: Georgia, 'Times New Roman', Times, serif; } #mainContainer{ display: flex; align-items: center; flex-direction: column; border-radius: 10px; background-color: white; margin-top: 15%; } #submitButton{ background-color: #0191FE; color: white; border: none; border-radius: 10px; margin-top: 10px; margin-left: 30%; padding: 10px; } #submitButton:hover{ cursor: pointer; }
Part 4: Execution
To run the flask webapp we need one command
flask run
This command will run our flask webapp locally on port number 5000 by default.
Part 5: Output
Some Pros of the Project:
- The accuracy of converting the Audio(Speech) to convert text is almost 92%
Some Cons of the Project:
- The project only take .wav file as a input.
Resources
Github Repository
Flask Doc
SpeechRecognition Doc
Top comments (2)
Well yeah its good, but I wouldn't call copying and pasting code as a "project"
I have not added explaination for this blog I know it's incomplete without it.
I'll edit this blog soon.