Compare commits

...

2 Commits

Author SHA1 Message Date
neru b3109d643d fix: add extra margin to avoid audios cutting off early 2026-01-15 13:14:30 -03:00
neru 00e02b9f97 fix: make database persistent 2026-01-15 13:00:31 -03:00
3 changed files with 8 additions and 3 deletions
View File
+3 -1
View File
@@ -7,4 +7,6 @@ services:
DISCORD_ID: DISCORD_ID:
DISCORD_TOKEN: DISCORD_TOKEN:
TTS_AZURE_KEY: TTS_AZURE_KEY:
restart: unless-stopped restart: unless-stopped
volumes:
- ./db.sqlite:/app/db.sqlite
+5 -2
View File
@@ -11,6 +11,8 @@ import { PassThrough, Readable } from 'stream';
import prism from 'prism-media'; import prism from 'prism-media';
const DURATION_MARGIN_PCT = 0.25;
export class StreamQueue { export class StreamQueue {
private queue: Readable[] = []; private queue: Readable[] = [];
private isPlaying = false; private isPlaying = false;
@@ -133,13 +135,13 @@ export class MixedStream {
}); });
transcoder.on('end', () => { transcoder.on('end', () => {
const durationMs = (totalBytes / 192000) * 1000; const durationMs = (totalBytes / 192000) * 1000 * (1 + DURATION_MARGIN_PCT);
setTimeout(() => { setTimeout(() => {
source.unpipe(transcoder); source.unpipe(transcoder);
transcoder.unpipe(mixerInput); transcoder.unpipe(mixerInput);
this.mixer.removeAudioinput(mixerInput);
transcoder.destroy(); transcoder.destroy();
this.mixer.removeAudioinput(mixerInput);
resolve(); resolve();
}, durationMs); }, durationMs);
}); });
@@ -151,6 +153,7 @@ export class MixedStream {
}); });
source.pipe(transcoder).pipe(mixerInput); source.pipe(transcoder).pipe(mixerInput);
}); });
} }