TTS: include mp3 files in cache stats
TTSService._put_cache writes .mp3 for MP3 audio (ID3/MPEG-framed bytes) and
.wav otherwise, and the rest of the class treats both as cache entries
(_get_cache iterates (".mp3", ".wav"); eviction globs "*.*"). But
get_stats() enumerated the cache with `glob("*.wav")` only, so both
cache_entries and cache_size_mb undercounted — reporting 0 whenever the
cache held MP3 files, which is the common case for most TTS providers.
Glob both extensions so the reported stats match what's actually cached.
tests/test_tts_cache_stats.py writes an MP3-headed blob via _put_cache and
asserts get_stats() reports one entry with non-zero size. Fails before this
change.
This commit is contained in:
@@ -188,7 +188,7 @@ class TTSService:
|
|||||||
provider = settings["tts_provider"]
|
provider = settings["tts_provider"]
|
||||||
tts_enabled = settings.get("tts_enabled", True)
|
tts_enabled = settings.get("tts_enabled", True)
|
||||||
|
|
||||||
cache_files = list(self.cache_dir.glob("*.wav"))
|
cache_files = list(self.cache_dir.glob("*.wav")) + list(self.cache_dir.glob("*.mp3"))
|
||||||
cache_size = sum(f.stat().st_size for f in cache_files)
|
cache_size = sum(f.stat().st_size for f in cache_files)
|
||||||
|
|
||||||
is_available = self.available and tts_enabled
|
is_available = self.available and tts_enabled
|
||||||
|
|||||||
12
tests/test_tts_cache_stats.py
Normal file
12
tests/test_tts_cache_stats.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
from services.tts.tts_service import TTSService
|
||||||
|
|
||||||
|
|
||||||
|
def test_tts_cache_stats_counts_mp3(tmp_path):
|
||||||
|
service = TTSService(cache_dir=str(tmp_path))
|
||||||
|
|
||||||
|
# Put an MP3-headed blob (starts with b'ID3') into cache, with size > 1MB so cache_size_mb > 0
|
||||||
|
service._put_cache("k", b"ID3" + b"x" * (1024 * 1024))
|
||||||
|
|
||||||
|
stats = service.get_stats()
|
||||||
|
assert stats["cache_entries"] == 1
|
||||||
|
assert stats["cache_size_mb"] > 0
|
||||||
Reference in New Issue
Block a user