Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,14 @@ Incorrect:
``` bash
cd src/app/convertor/service/
uv run transcription_service.py # ❌ breaks relative paths
```
```

------------------------------------------------------------------------

## 🚀 Run with docker-compose

``` bash
1 - docker-compose up --force-recreate --build -d #only first time container remain unless stopped
2- docker exec -it talk2text bash #other time start from here
3 - uv run flask --app src.app.main run --debug
```
16 changes: 16 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
services:
flask:
container_name: talk2text
restart: unless-stopped
build: .
ports:
- "5000:5000"
volumes:
- ./src:/app/src:Z # aggiunta :Z per SELinux
working_dir: /app
environment:
FLASK_APP: main # se il file principale è src/main.py
FLASK_ENV: development
FLASK_RUN_HOST: 0.0.0.0
FLASK_RUN_PORT: 5000
command: tail -f /dev/null
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name = "speach-to-text"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
requires-python = "==3.12.0"
dependencies = [
"black>=25.11.0",
"ffmpeg>=1.4",
Expand Down
4 changes: 3 additions & 1 deletion src/app/convertor/service/convertor_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ class ConvertorService:
@classmethod
def create_text(cls):
# data_dir = "data"
input_file_name = "./src/app/convertor/service/data/inputs/5846093734223028963.ogg"
input_file_name = (
"./src/app/convertor/service/data/inputs/5846093734223028963.ogg"
)
# input_file_name = "./convertor/service/data/inputs/5846093734223028963.ogg"
# output_file_name = "./data/outputs/5846093734223028963"
model_id = "tiny"
Expand Down
5 changes: 1 addition & 4 deletions src/app/convertor/service/transcription.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,7 @@ def get_transcription(self):
# _, probs = model.detect_language(mel)
# print(f"Detected language: {max(probs, key=probs.get)}")

result = model.transcribe(
self.input_file_name,
fp16=False
)
result = model.transcribe(self.input_file_name, fp16=False)

if self.show_text:
if self.text_preview_size:
Expand Down
27 changes: 22 additions & 5 deletions src/app/main.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
from flask import Flask
from app.convertor.service.convertor_service import ConvertorService
from flask import Flask, render_template, request

# from app.convertor.service.convertor_service import ConvertorService

app = Flask(__name__)


@app.route("/")
def hello_world():
text = ConvertorService.create_text()
return f"<h1>{text}</h1>"
def main():
# text = ConvertorService.create_text()
return render_template("main.html", person="enrico")


@app.route("/upload", methods=["POST"])
def upload_file():
if "file" not in request.files:
return "No file part"

file = request.files["file"]

if file.filename == "":
return "No selected file"

# Leggi il contenuto del file in memoria
data = file.read() # bytes
# oppure se è un testo: file_content = file.read().decode('utf-8')
return f"Dimensione del file: {len(data)} byte"
16 changes: 16 additions & 0 deletions src/app/static/css/main.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
body {
display: flex;
flex-flow: column wrap;
align-items: center; /* centri verticalmente */
height: 100vh; /* altezza del viewport */
margin: 0; /* rimuove margini default */
}

.card-container {
margin-top: 10vh;
justify-content: center;
width: 80%;
display: flex;
flex-direction: column;
justify-content: center;
}
61 changes: 61 additions & 0 deletions src/app/templates/main.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Bootstrap demo</title>
<link
rel="stylesheet"
href="{{ url_for('static', filename='css/main.css') }}"
/>

<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB"
crossorigin="anonymous"
/>
</head>
<body>
<nav
class="navbar bg-dark border-bottom border-body"
data-bs-theme="dark"
style="width: 100%"
>
<div class="container-fluid">
<span class="navbar-brand mb-0 h1">Talk2Text</span>
</div>
</nav>
<div class="card-container">
<div>
<div class="card">
<div class="card-header">Carica qui il tuo file</div>
<div class="card-body">
<div class="input-group">
<input
type="file"
class="form-control"
id="inputGroupFile04"
aria-describedby="inputGroupFileAddon04"
aria-label="Upload"
/>
<button
class="btn btn-success"
type="button"
id="inputGroupFileAddon04"
>
Upload
</button>
</div>
</div>
</div>
</div>
</div>

<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"
integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI"
crossorigin="anonymous"
></script>
</body>
</html>
Loading