Use tabulate to pretty print voices (#321)

Signed-off-by: rany <rany2@riseup.net>
This commit is contained in:
Rany
2024-11-22 20:07:15 +02:00
committed by GitHub
parent 3e4de19344
commit 3f2b635ff6
3 changed files with 15 additions and 16 deletions

View File

@@ -35,3 +35,4 @@ dev =
isort
mypy
pylint
types-tabulate

View File

@@ -6,6 +6,7 @@ setup(
install_requires=[
"aiohttp>=3.8.0",
"certifi>=2023.11.17",
"tabulate>=0.4.4",
"typing-extensions>=4.1.0",
],
)

View File

@@ -6,6 +6,8 @@ import sys
from io import TextIOWrapper
from typing import Any, TextIO, Union
from tabulate import tabulate
from . import Communicate, SubMaker, list_voices
@@ -13,22 +15,17 @@ async def _print_voices(*, proxy: str) -> None:
"""Print all available voices."""
voices = await list_voices(proxy=proxy)
voices = sorted(voices, key=lambda voice: voice["ShortName"])
for idx, voice in enumerate(voices):
if idx != 0:
print()
for key in voice.keys():
if key in (
"SuggestedCodec",
"FriendlyName",
"Status",
"VoiceTag",
"Name",
"Locale",
):
continue
pretty_key_name = key if key != "ShortName" else "Name"
print(f"{pretty_key_name}: {voice[key]}")
headers = ["Name", "Gender", "ContentCategories", "VoicePersonalities"]
table = [
[
voice["ShortName"],
voice["Gender"],
", ".join(voice["VoiceTag"]["ContentCategories"]),
", ".join(voice["VoiceTag"]["VoicePersonalities"]),
]
for voice in voices
]
print(tabulate(table, headers))
async def _run_tts(args: Any) -> None: