Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| from typing import TYPE_CHECKING | |
| from gradio_client.client import Job | |
| from gradio_tools.tools.gradio_tool import GradioTool | |
| if TYPE_CHECKING: | |
| import gradio as gr | |
| SUPPORTED_LANGS = [ | |
| ("English", "en"), | |
| ("German", "de"), | |
| ("Spanish", "es"), | |
| ("French", "fr"), | |
| ("Hindi", "hi"), | |
| ("Italian", "it"), | |
| ("Japanese", "ja"), | |
| ("Korean", "ko"), | |
| ("Polish", "pl"), | |
| ("Portuguese", "pt"), | |
| ("Russian", "ru"), | |
| ("Turkish", "tr"), | |
| ("Chinese", "zh"), | |
| ] | |
| SUPPORTED_LANGS = {lang: code for lang, code in SUPPORTED_LANGS} | |
| VOICES = ["Unconditional", "Announcer"] | |
| SUPPORTED_SPEAKERS = VOICES + [p for p in SUPPORTED_LANGS] | |
| NON_SPEECH_TOKENS = [ | |
| "[laughter]", | |
| "[laughs]", | |
| "[sighs]", | |
| "[music]", | |
| "[gasps]", | |
| "[clears throat]", | |
| "'♪' for song lyrics. Put ♪ on either side of the the text", | |
| "'…' for hesitations", | |
| ] | |
| class BarkTextToSpeechTool(GradioTool): | |
| """Tool for calling bark text-to-speech llm.""" | |
| def __init__( | |
| self, | |
| name="BarkTextToSpeech", | |
| description=( | |
| "A tool for text-to-speech. Use this tool to convert text " | |
| "into sounds that sound like a human read it. Input will be a two strings separated by a |: " | |
| "the first will be the text to read. The second will be the desired speaking language. " | |
| f"It MUST be one of the following choices {','.join(SUPPORTED_SPEAKERS)}. " | |
| f"Additionally, you can include the following non speech tokens: {NON_SPEECH_TOKENS}" | |
| "The output will the text transcript of that file." | |
| ), | |
| src="suno/bark", | |
| hf_token=None, | |
| duplicate=False, | |
| ) -> None: | |
| super().__init__(name, description, src, hf_token, duplicate) | |
| def create_job(self, query: str) -> Job: | |
| try: | |
| text, speaker = ( | |
| query[: query.rindex("|")], | |
| query[(query.rindex("|") + 1) :].strip(), | |
| ) | |
| except ValueError: | |
| text, speaker = query, "Unconditional" | |
| if speaker in VOICES: | |
| pass | |
| elif speaker in SUPPORTED_LANGS: | |
| speaker = f"Speaker 0 ({SUPPORTED_LANGS[speaker]})" | |
| else: | |
| speaker = "Unconditional" | |
| return self.client.submit(text, speaker, fn_index=3) | |
| def postprocess(self, output: str) -> str: | |
| return output | |
| def _block_input(self, gr) -> "gr.components.Component": | |
| return gr.Textbox() | |
| def _block_output(self, gr) -> "gr.components.Component": | |
| return gr.Audio() | |