Use tabulate to pretty print voices (#321)
Signed-off-by: rany <rany2@riseup.net>
This commit is contained in:
1
setup.py
1
setup.py
@@ -6,6 +6,7 @@ setup(
|
||||
install_requires=[
|
||||
"aiohttp>=3.8.0",
|
||||
"certifi>=2023.11.17",
|
||||
"tabulate>=0.4.4",
|
||||
"typing-extensions>=4.1.0",
|
||||
],
|
||||
)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user