Spaces:
Running
Running
Commit
·
8eee24d
1
Parent(s):
e4132f2
Add ffmpeg and better error logging
Browse files- Dockerfile +2 -0
- pocket_tts/main.py +12 -5
Dockerfile
CHANGED
|
@@ -5,6 +5,8 @@ WORKDIR /app
|
|
| 5 |
# Install system dependencies
|
| 6 |
RUN apt-get update && apt-get install -y \
|
| 7 |
git \
|
|
|
|
|
|
|
| 8 |
&& rm -rf /var/lib/apt/lists/*
|
| 9 |
|
| 10 |
# Install uv for fast package management
|
|
|
|
| 5 |
# Install system dependencies
|
| 6 |
RUN apt-get update && apt-get install -y \
|
| 7 |
git \
|
| 8 |
+
build-essential \
|
| 9 |
+
ffmpeg \
|
| 10 |
&& rm -rf /var/lib/apt/lists/*
|
| 11 |
|
| 12 |
# Install uv for fast package management
|
pocket_tts/main.py
CHANGED
|
@@ -111,19 +111,26 @@ def write_to_queue(queue, text_to_generate, model_state, **kwargs):
|
|
| 111 |
def generate_data_with_state(text_to_generate: str, model_state: dict, **kwargs):
|
| 112 |
queue = Queue()
|
| 113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
# Run your function in a thread
|
| 115 |
-
thread = threading.Thread(
|
| 116 |
-
target=write_to_queue, args=(queue, text_to_generate, model_state), kwargs=kwargs
|
| 117 |
-
)
|
| 118 |
thread.start()
|
| 119 |
|
| 120 |
# Yield data as it becomes available
|
| 121 |
-
i = 0
|
| 122 |
while True:
|
| 123 |
data = queue.get()
|
| 124 |
if data is None:
|
| 125 |
break
|
| 126 |
-
|
|
|
|
|
|
|
|
|
|
| 127 |
yield data
|
| 128 |
|
| 129 |
thread.join()
|
|
|
|
| 111 |
def generate_data_with_state(text_to_generate: str, model_state: dict, **kwargs):
|
| 112 |
queue = Queue()
|
| 113 |
|
| 114 |
+
def worker():
|
| 115 |
+
try:
|
| 116 |
+
write_to_queue(queue, text_to_generate, model_state, **kwargs)
|
| 117 |
+
except Exception as e:
|
| 118 |
+
logger.error(f"Error in generation worker: {e}", exc_info=True)
|
| 119 |
+
queue.put(e) # Send exception to main thread
|
| 120 |
+
|
| 121 |
# Run your function in a thread
|
| 122 |
+
thread = threading.Thread(target=worker)
|
|
|
|
|
|
|
| 123 |
thread.start()
|
| 124 |
|
| 125 |
# Yield data as it becomes available
|
|
|
|
| 126 |
while True:
|
| 127 |
data = queue.get()
|
| 128 |
if data is None:
|
| 129 |
break
|
| 130 |
+
if isinstance(data, Exception):
|
| 131 |
+
# Re-raise the exception to abort the stream (will cause 500 on client if headers not sent, or truncated stream)
|
| 132 |
+
logger.error("Re-raising exception from worker in generator")
|
| 133 |
+
raise data
|
| 134 |
yield data
|
| 135 |
|
| 136 |
thread.join()
|