optimize ffmpeg buffer reading :round duration to nearest lower 0.1s
This commit is contained in:
parent
d623578d95
commit
788fe1c676
1 changed files with 10 additions and 13 deletions
|
|
@ -12,6 +12,9 @@ from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
|
||||||
from src.whisper_streaming.whisper_online import backend_factory, online_factory, add_shared_args
|
from src.whisper_streaming.whisper_online import backend_factory, online_factory, add_shared_args
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import math
|
||||||
|
|
||||||
|
|
||||||
##### LOAD ARGS #####
|
##### LOAD ARGS #####
|
||||||
|
|
||||||
|
|
@ -125,23 +128,17 @@ async def websocket_endpoint(websocket: WebSocket):
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
elapsed_time = int(time() - beg)
|
elapsed_time = math.floor((time() - beg) * 10) / 10 # Round to 0.1 sec
|
||||||
|
ffmpeg_buffer_from_duration = max(int(32000 * elapsed_time), 4096)
|
||||||
beg = time()
|
beg = time()
|
||||||
chunk = await loop.run_in_executor(
|
chunk = await loop.run_in_executor(
|
||||||
None, ffmpeg_process.stdout.read, 32000 * elapsed_time
|
None, ffmpeg_process.stdout.read, ffmpeg_buffer_from_duration
|
||||||
)
|
)
|
||||||
if (
|
if not chunk:
|
||||||
not chunk
|
print("FFmpeg stdout closed.")
|
||||||
): # The first chunk will be almost empty, FFmpeg is still starting up
|
break
|
||||||
chunk = await loop.run_in_executor(
|
|
||||||
None, ffmpeg_process.stdout.read, 4096
|
|
||||||
)
|
|
||||||
if not chunk: # FFmpeg might have closed
|
|
||||||
print("FFmpeg stdout closed.")
|
|
||||||
break
|
|
||||||
|
|
||||||
pcm_buffer.extend(chunk)
|
pcm_buffer.extend(chunk)
|
||||||
|
|
||||||
if len(pcm_buffer) >= BYTES_PER_SEC:
|
if len(pcm_buffer) >= BYTES_PER_SEC:
|
||||||
# Convert int16 -> float32
|
# Convert int16 -> float32
|
||||||
pcm_array = (
|
pcm_array = (
|
||||||
|
|
@ -186,7 +183,7 @@ async def websocket_endpoint(websocket: WebSocket):
|
||||||
lines.append(
|
lines.append(
|
||||||
{
|
{
|
||||||
"speaker": ch["speaker"][-1],
|
"speaker": ch["speaker"][-1],
|
||||||
"text": ch['text'],
|
"text": ch['text']
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue