Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	tts indian accent
Browse files- .gitignore +176 -0
 - app.py +116 -0
 - requirements.txt +52 -0
 - voice_description_indian.json +198 -0
 
    	
        .gitignore
    ADDED
    
    | 
         @@ -0,0 +1,176 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            # Byte-compiled / optimized / DLL files
         
     | 
| 2 | 
         
            +
            __pycache__/
         
     | 
| 3 | 
         
            +
            *.py[cod]
         
     | 
| 4 | 
         
            +
            *$py.class
         
     | 
| 5 | 
         
            +
            venv_new/
         
     | 
| 6 | 
         
            +
            NeMo/
         
     | 
| 7 | 
         
            +
            asr_venv
         
     | 
| 8 | 
         
            +
            *.nemo
         
     | 
| 9 | 
         
            +
            # C extensions
         
     | 
| 10 | 
         
            +
            *.so
         
     | 
| 11 | 
         
            +
            *.wav
         
     | 
| 12 | 
         
            +
            *.mp3
         
     | 
| 13 | 
         
            +
            *.log
         
     | 
| 14 | 
         
            +
            # Distribution / packaging
         
     | 
| 15 | 
         
            +
            .Python
         
     | 
| 16 | 
         
            +
            build/
         
     | 
| 17 | 
         
            +
            develop-eggs/
         
     | 
| 18 | 
         
            +
            dist/
         
     | 
| 19 | 
         
            +
            downloads/
         
     | 
| 20 | 
         
            +
            eggs/
         
     | 
| 21 | 
         
            +
            .eggs/
         
     | 
| 22 | 
         
            +
            lib/
         
     | 
| 23 | 
         
            +
            lib64/
         
     | 
| 24 | 
         
            +
            parts/
         
     | 
| 25 | 
         
            +
            sdist/
         
     | 
| 26 | 
         
            +
            var/
         
     | 
| 27 | 
         
            +
            wheels/
         
     | 
| 28 | 
         
            +
            share/python-wheels/
         
     | 
| 29 | 
         
            +
            *.egg-info/
         
     | 
| 30 | 
         
            +
            .installed.cfg
         
     | 
| 31 | 
         
            +
            *.egg
         
     | 
| 32 | 
         
            +
            MANIFEST
         
     | 
| 33 | 
         
            +
             
     | 
| 34 | 
         
            +
            # PyInstaller
         
     | 
| 35 | 
         
            +
            #  Usually these files are written by a python script from a template
         
     | 
| 36 | 
         
            +
            #  before PyInstaller builds the exe, so as to inject date/other infos into it.
         
     | 
| 37 | 
         
            +
            *.manifest
         
     | 
| 38 | 
         
            +
            *.spec
         
     | 
| 39 | 
         
            +
             
     | 
| 40 | 
         
            +
            # Installer logs
         
     | 
| 41 | 
         
            +
            pip-log.txt
         
     | 
| 42 | 
         
            +
            pip-delete-this-directory.txt
         
     | 
| 43 | 
         
            +
             
     | 
| 44 | 
         
            +
            # Unit test / coverage reports
         
     | 
| 45 | 
         
            +
            htmlcov/
         
     | 
| 46 | 
         
            +
            .tox/
         
     | 
| 47 | 
         
            +
            .nox/
         
     | 
| 48 | 
         
            +
            .coverage
         
     | 
| 49 | 
         
            +
            .coverage.*
         
     | 
| 50 | 
         
            +
            .cache
         
     | 
| 51 | 
         
            +
            nosetests.xml
         
     | 
| 52 | 
         
            +
            coverage.xml
         
     | 
| 53 | 
         
            +
            *.cover
         
     | 
| 54 | 
         
            +
            *.py,cover
         
     | 
| 55 | 
         
            +
            .hypothesis/
         
     | 
| 56 | 
         
            +
            .pytest_cache/
         
     | 
| 57 | 
         
            +
            cover/
         
     | 
| 58 | 
         
            +
             
     | 
| 59 | 
         
            +
            # Translations
         
     | 
| 60 | 
         
            +
            *.mo
         
     | 
| 61 | 
         
            +
            *.pot
         
     | 
| 62 | 
         
            +
             
     | 
| 63 | 
         
            +
            # Django stuff:
         
     | 
| 64 | 
         
            +
            *.log
         
     | 
| 65 | 
         
            +
            local_settings.py
         
     | 
| 66 | 
         
            +
            db.sqlite3
         
     | 
| 67 | 
         
            +
            db.sqlite3-journal
         
     | 
| 68 | 
         
            +
             
     | 
| 69 | 
         
            +
            # Flask stuff:
         
     | 
| 70 | 
         
            +
            instance/
         
     | 
| 71 | 
         
            +
            .webassets-cache
         
     | 
| 72 | 
         
            +
             
     | 
| 73 | 
         
            +
            # Scrapy stuff:
         
     | 
| 74 | 
         
            +
            .scrapy
         
     | 
| 75 | 
         
            +
             
     | 
| 76 | 
         
            +
            # Sphinx documentation
         
     | 
| 77 | 
         
            +
            docs/_build/
         
     | 
| 78 | 
         
            +
             
     | 
| 79 | 
         
            +
            # PyBuilder
         
     | 
| 80 | 
         
            +
            .pybuilder/
         
     | 
| 81 | 
         
            +
            target/
         
     | 
| 82 | 
         
            +
             
     | 
| 83 | 
         
            +
            # Jupyter Notebook
         
     | 
| 84 | 
         
            +
            .ipynb_checkpoints
         
     | 
| 85 | 
         
            +
             
     | 
| 86 | 
         
            +
            # IPython
         
     | 
| 87 | 
         
            +
            profile_default/
         
     | 
| 88 | 
         
            +
            ipython_config.py
         
     | 
| 89 | 
         
            +
             
     | 
| 90 | 
         
            +
            # pyenv
         
     | 
| 91 | 
         
            +
            #   For a library or package, you might want to ignore these files since the code is
         
     | 
| 92 | 
         
            +
            #   intended to run in multiple environments; otherwise, check them in:
         
     | 
| 93 | 
         
            +
            # .python-version
         
     | 
| 94 | 
         
            +
             
     | 
| 95 | 
         
            +
            # pipenv
         
     | 
| 96 | 
         
            +
            #   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
         
     | 
| 97 | 
         
            +
            #   However, in case of collaboration, if having platform-specific dependencies or dependencies
         
     | 
| 98 | 
         
            +
            #   having no cross-platform support, pipenv may install dependencies that don't work, or not
         
     | 
| 99 | 
         
            +
            #   install all needed dependencies.
         
     | 
| 100 | 
         
            +
            #Pipfile.lock
         
     | 
| 101 | 
         
            +
             
     | 
| 102 | 
         
            +
            # UV
         
     | 
| 103 | 
         
            +
            #   Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
         
     | 
| 104 | 
         
            +
            #   This is especially recommended for binary packages to ensure reproducibility, and is more
         
     | 
| 105 | 
         
            +
            #   commonly ignored for libraries.
         
     | 
| 106 | 
         
            +
            #uv.lock
         
     | 
| 107 | 
         
            +
             
     | 
| 108 | 
         
            +
            # poetry
         
     | 
| 109 | 
         
            +
            #   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
         
     | 
| 110 | 
         
            +
            #   This is especially recommended for binary packages to ensure reproducibility, and is more
         
     | 
| 111 | 
         
            +
            #   commonly ignored for libraries.
         
     | 
| 112 | 
         
            +
            #   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
         
     | 
| 113 | 
         
            +
            #poetry.lock
         
     | 
| 114 | 
         
            +
             
     | 
| 115 | 
         
            +
            # pdm
         
     | 
| 116 | 
         
            +
            #   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
         
     | 
| 117 | 
         
            +
            #pdm.lock
         
     | 
| 118 | 
         
            +
            #   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
         
     | 
| 119 | 
         
            +
            #   in version control.
         
     | 
| 120 | 
         
            +
            #   https://pdm.fming.dev/latest/usage/project/#working-with-version-control
         
     | 
| 121 | 
         
            +
            .pdm.toml
         
     | 
| 122 | 
         
            +
            .pdm-python
         
     | 
| 123 | 
         
            +
            .pdm-build/
         
     | 
| 124 | 
         
            +
             
     | 
| 125 | 
         
            +
            # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
         
     | 
| 126 | 
         
            +
            __pypackages__/
         
     | 
| 127 | 
         
            +
             
     | 
| 128 | 
         
            +
            # Celery stuff
         
     | 
| 129 | 
         
            +
            celerybeat-schedule
         
     | 
| 130 | 
         
            +
            celerybeat.pid
         
     | 
| 131 | 
         
            +
             
     | 
| 132 | 
         
            +
            # SageMath parsed files
         
     | 
| 133 | 
         
            +
            *.sage.py
         
     | 
| 134 | 
         
            +
             
     | 
| 135 | 
         
            +
            # Environments
         
     | 
| 136 | 
         
            +
            .env
         
     | 
| 137 | 
         
            +
            .venv
         
     | 
| 138 | 
         
            +
            env/
         
     | 
| 139 | 
         
            +
            venv/
         
     | 
| 140 | 
         
            +
            ENV/
         
     | 
| 141 | 
         
            +
            env.bak/
         
     | 
| 142 | 
         
            +
            venv.bak/
         
     | 
| 143 | 
         
            +
             
     | 
| 144 | 
         
            +
            # Spyder project settings
         
     | 
| 145 | 
         
            +
            .spyderproject
         
     | 
| 146 | 
         
            +
            .spyproject
         
     | 
| 147 | 
         
            +
             
     | 
| 148 | 
         
            +
            # Rope project settings
         
     | 
| 149 | 
         
            +
            .ropeproject
         
     | 
| 150 | 
         
            +
             
     | 
| 151 | 
         
            +
            # mkdocs documentation
         
     | 
| 152 | 
         
            +
            /site
         
     | 
| 153 | 
         
            +
             
     | 
| 154 | 
         
            +
            # mypy
         
     | 
| 155 | 
         
            +
            .mypy_cache/
         
     | 
| 156 | 
         
            +
            .dmypy.json
         
     | 
| 157 | 
         
            +
            dmypy.json
         
     | 
| 158 | 
         
            +
             
     | 
| 159 | 
         
            +
            # Pyre type checker
         
     | 
| 160 | 
         
            +
            .pyre/
         
     | 
| 161 | 
         
            +
             
     | 
| 162 | 
         
            +
            # pytype static type analyzer
         
     | 
| 163 | 
         
            +
            .pytype/
         
     | 
| 164 | 
         
            +
             
     | 
| 165 | 
         
            +
            # Cython debug symbols
         
     | 
| 166 | 
         
            +
            cython_debug/
         
     | 
| 167 | 
         
            +
             
     | 
| 168 | 
         
            +
            # PyCharm
         
     | 
| 169 | 
         
            +
            #  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
         
     | 
| 170 | 
         
            +
            #  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
         
     | 
| 171 | 
         
            +
            #  and can be added to the global gitignore or merged into this file.  For a more nuclear
         
     | 
| 172 | 
         
            +
            #  option (not recommended) you can uncomment the following to ignore the entire idea folder.
         
     | 
| 173 | 
         
            +
            #.idea/
         
     | 
| 174 | 
         
            +
             
     | 
| 175 | 
         
            +
            # PyPI configuration file
         
     | 
| 176 | 
         
            +
            .pypirc
         
     | 
    	
        app.py
    ADDED
    
    | 
         @@ -0,0 +1,116 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            import gradio as gr
         
     | 
| 2 | 
         
            +
            import requests
         
     | 
| 3 | 
         
            +
            import json
         
     | 
| 4 | 
         
            +
            import logging
         
     | 
| 5 | 
         
            +
             
     | 
| 6 | 
         
            +
            # Configure logging
         
     | 
| 7 | 
         
            +
            logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
         
     | 
| 8 | 
         
            +
            logger = logging.getLogger(__name__)
         
     | 
| 9 | 
         
            +
             
     | 
| 10 | 
         
            +
            # Load voice descriptions from JSON file
         
     | 
| 11 | 
         
            +
            def load_voice_descriptions(file_path):
         
     | 
| 12 | 
         
            +
                try:
         
     | 
| 13 | 
         
            +
                    with open(file_path, 'r') as file:
         
     | 
| 14 | 
         
            +
                        return json.load(file)
         
     | 
| 15 | 
         
            +
                except FileNotFoundError:
         
     | 
| 16 | 
         
            +
                    logger.error(f"File not found: {file_path}")
         
     | 
| 17 | 
         
            +
                    return []
         
     | 
| 18 | 
         
            +
                except json.JSONDecodeError as e:
         
     | 
| 19 | 
         
            +
                    logger.error(f"Failed to parse JSON: {e}")
         
     | 
| 20 | 
         
            +
                    return []
         
     | 
| 21 | 
         
            +
             
     | 
| 22 | 
         
            +
            # Function to send text input to the API and retrieve the audio file
         
     | 
| 23 | 
         
            +
            def get_audio(input_text, voice_description_id):
         
     | 
| 24 | 
         
            +
                try:
         
     | 
| 25 | 
         
            +
                    # Find the selected voice description
         
     | 
| 26 | 
         
            +
                    selected_description = next((desc for desc in voice_descriptions if desc['id'] == int(voice_description_id)), None)
         
     | 
| 27 | 
         
            +
                    
         
     | 
| 28 | 
         
            +
                    if selected_description:
         
     | 
| 29 | 
         
            +
                        voice_description = selected_description['voice_description']
         
     | 
| 30 | 
         
            +
                        output_file_name = selected_description['output_file_name']
         
     | 
| 31 | 
         
            +
                    else:
         
     | 
| 32 | 
         
            +
                        logger.error(f"Voice description not found for ID: {voice_description_id}")
         
     | 
| 33 | 
         
            +
                        return f"Error: Voice description not found"
         
     | 
| 34 | 
         
            +
                    
         
     | 
| 35 | 
         
            +
                    # Define the API endpoint and headers
         
     | 
| 36 | 
         
            +
                    url = "http://localhost:9860/v1/audio/speech"
         
     | 
| 37 | 
         
            +
                    headers = {
         
     | 
| 38 | 
         
            +
                        "accept": "application/json",
         
     | 
| 39 | 
         
            +
                        "Content-Type": "application/json"
         
     | 
| 40 | 
         
            +
                    }
         
     | 
| 41 | 
         
            +
                    
         
     | 
| 42 | 
         
            +
                    # Define the request payload
         
     | 
| 43 | 
         
            +
                    payload = {
         
     | 
| 44 | 
         
            +
                        "input": input_text,
         
     | 
| 45 | 
         
            +
                        "voice": voice_description
         
     | 
| 46 | 
         
            +
                    }
         
     | 
| 47 | 
         
            +
                    
         
     | 
| 48 | 
         
            +
                    # Send the POST request
         
     | 
| 49 | 
         
            +
                    response = requests.post(url, json=payload, headers=headers, stream=True)
         
     | 
| 50 | 
         
            +
                    
         
     | 
| 51 | 
         
            +
                    # Check if the request was successful
         
     | 
| 52 | 
         
            +
                    if response.status_code == 200:
         
     | 
| 53 | 
         
            +
                        logger.info(f"API request successful. Status code: {response.status_code}")
         
     | 
| 54 | 
         
            +
                        
         
     | 
| 55 | 
         
            +
                        # Save the audio file
         
     | 
| 56 | 
         
            +
                        with open(output_file_name, "wb") as audio_file:
         
     | 
| 57 | 
         
            +
                            for chunk in response.iter_content(chunk_size=1024):
         
     | 
| 58 | 
         
            +
                                if chunk:
         
     | 
| 59 | 
         
            +
                                    audio_file.write(chunk)
         
     | 
| 60 | 
         
            +
                        
         
     | 
| 61 | 
         
            +
                        logger.info(f"Audio file saved to: {output_file_name}")
         
     | 
| 62 | 
         
            +
                        
         
     | 
| 63 | 
         
            +
                        # Return the path to the saved audio file
         
     | 
| 64 | 
         
            +
                        return output_file_name
         
     | 
| 65 | 
         
            +
                    else:
         
     | 
| 66 | 
         
            +
                        logger.error(f"API request failed. Status code: {response.status_code}, {response.text}")
         
     | 
| 67 | 
         
            +
                        return f"Error: {response.status_code}, {response.text}"
         
     | 
| 68 | 
         
            +
                except requests.exceptions.RequestException as e:
         
     | 
| 69 | 
         
            +
                    logger.error(f"Request exception: {e}")
         
     | 
| 70 | 
         
            +
                    return f"Request error: {e}"
         
     | 
| 71 | 
         
            +
                except Exception as e:
         
     | 
| 72 | 
         
            +
                    logger.error(f"General exception: {e}")
         
     | 
| 73 | 
         
            +
                    return f"Error: {e}"
         
     | 
| 74 | 
         
            +
             
     | 
| 75 | 
         
            +
            # Load voice descriptions from JSON file
         
     | 
| 76 | 
         
            +
            voice_descriptions = load_voice_descriptions('voice_description_indian.json')
         
     | 
| 77 | 
         
            +
             
     | 
| 78 | 
         
            +
            # Extract IDs and descriptions for dropdown menu
         
     | 
| 79 | 
         
            +
            dropdown_choices = [(str(desc['id']), f"{desc['id']}: {desc['voice_description'][:50]}...") for desc in voice_descriptions]
         
     | 
| 80 | 
         
            +
             
     | 
| 81 | 
         
            +
            # Define the Gradio interface
         
     | 
| 82 | 
         
            +
            with gr.Blocks() as demo:
         
     | 
| 83 | 
         
            +
                gr.Markdown("### Text-to-Speech Generator")
         
     | 
| 84 | 
         
            +
                
         
     | 
| 85 | 
         
            +
                with gr.Row():
         
     | 
| 86 | 
         
            +
                    input_text = gr.Textbox(label="Enter Text", placeholder="Type your text here...")
         
     | 
| 87 | 
         
            +
                
         
     | 
| 88 | 
         
            +
                with gr.Row():
         
     | 
| 89 | 
         
            +
                    voice_dropdown = gr.Dropdown(
         
     | 
| 90 | 
         
            +
                        choices=[choice[0] for choice in dropdown_choices],
         
     | 
| 91 | 
         
            +
                        label="Select Voice Description",
         
     | 
| 92 | 
         
            +
                        type="value",
         
     | 
| 93 | 
         
            +
                        value=dropdown_choices[0][0] if dropdown_choices else None,
         
     | 
| 94 | 
         
            +
                        interactive=True,
         
     | 
| 95 | 
         
            +
                    )
         
     | 
| 96 | 
         
            +
                
         
     | 
| 97 | 
         
            +
                with gr.Row():
         
     | 
| 98 | 
         
            +
                    output_audio = gr.Audio(label="Generated Audio")
         
     | 
| 99 | 
         
            +
                
         
     | 
| 100 | 
         
            +
                submit_button = gr.Button("Generate Audio")
         
     | 
| 101 | 
         
            +
                
         
     | 
| 102 | 
         
            +
                def process_request(input_text, voice_description_id):
         
     | 
| 103 | 
         
            +
                    return get_audio(input_text, voice_description_id)
         
     | 
| 104 | 
         
            +
                
         
     | 
| 105 | 
         
            +
                submit_button.click(
         
     | 
| 106 | 
         
            +
                    process_request,
         
     | 
| 107 | 
         
            +
                    inputs=[input_text, voice_dropdown],
         
     | 
| 108 | 
         
            +
                    outputs=[output_audio]
         
     | 
| 109 | 
         
            +
                )
         
     | 
| 110 | 
         
            +
             
     | 
| 111 | 
         
            +
            # Launch the Gradio demo
         
     | 
| 112 | 
         
            +
            try:
         
     | 
| 113 | 
         
            +
                demo.launch()
         
     | 
| 114 | 
         
            +
            except Exception as e:
         
     | 
| 115 | 
         
            +
                logger.error(f"Failed to launch Gradio demo: {e}")
         
     | 
| 116 | 
         
            +
             
     | 
    	
        requirements.txt
    ADDED
    
    | 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            aiofiles==23.2.1
         
     | 
| 2 | 
         
            +
            annotated-types==0.7.0
         
     | 
| 3 | 
         
            +
            anyio==4.8.0
         
     | 
| 4 | 
         
            +
            certifi==2025.1.31
         
     | 
| 5 | 
         
            +
            charset-normalizer==3.4.1
         
     | 
| 6 | 
         
            +
            click==8.1.8
         
     | 
| 7 | 
         
            +
            fastapi==0.115.11
         
     | 
| 8 | 
         
            +
            ffmpy==0.5.0
         
     | 
| 9 | 
         
            +
            filelock==3.17.0
         
     | 
| 10 | 
         
            +
            fsspec==2025.2.0
         
     | 
| 11 | 
         
            +
            gradio==5.20.0
         
     | 
| 12 | 
         
            +
            gradio_client==1.7.2
         
     | 
| 13 | 
         
            +
            groovy==0.1.2
         
     | 
| 14 | 
         
            +
            h11==0.14.0
         
     | 
| 15 | 
         
            +
            httpcore==1.0.7
         
     | 
| 16 | 
         
            +
            httpx==0.28.1
         
     | 
| 17 | 
         
            +
            huggingface-hub==0.29.1
         
     | 
| 18 | 
         
            +
            idna==3.10
         
     | 
| 19 | 
         
            +
            Jinja2==3.1.5
         
     | 
| 20 | 
         
            +
            markdown-it-py==3.0.0
         
     | 
| 21 | 
         
            +
            MarkupSafe==2.1.5
         
     | 
| 22 | 
         
            +
            mdurl==0.1.2
         
     | 
| 23 | 
         
            +
            numpy==2.2.3
         
     | 
| 24 | 
         
            +
            orjson==3.10.15
         
     | 
| 25 | 
         
            +
            packaging==24.2
         
     | 
| 26 | 
         
            +
            pandas==2.2.3
         
     | 
| 27 | 
         
            +
            pillow==11.1.0
         
     | 
| 28 | 
         
            +
            pydantic==2.10.6
         
     | 
| 29 | 
         
            +
            pydantic_core==2.27.2
         
     | 
| 30 | 
         
            +
            pydub==0.25.1
         
     | 
| 31 | 
         
            +
            Pygments==2.19.1
         
     | 
| 32 | 
         
            +
            python-dateutil==2.9.0.post0
         
     | 
| 33 | 
         
            +
            python-multipart==0.0.20
         
     | 
| 34 | 
         
            +
            pytz==2025.1
         
     | 
| 35 | 
         
            +
            PyYAML==6.0.2
         
     | 
| 36 | 
         
            +
            requests==2.32.3
         
     | 
| 37 | 
         
            +
            rich==13.9.4
         
     | 
| 38 | 
         
            +
            ruff==0.9.9
         
     | 
| 39 | 
         
            +
            safehttpx==0.1.6
         
     | 
| 40 | 
         
            +
            semantic-version==2.10.0
         
     | 
| 41 | 
         
            +
            shellingham==1.5.4
         
     | 
| 42 | 
         
            +
            six==1.17.0
         
     | 
| 43 | 
         
            +
            sniffio==1.3.1
         
     | 
| 44 | 
         
            +
            starlette==0.46.0
         
     | 
| 45 | 
         
            +
            tomlkit==0.13.2
         
     | 
| 46 | 
         
            +
            tqdm==4.67.1
         
     | 
| 47 | 
         
            +
            typer==0.15.2
         
     | 
| 48 | 
         
            +
            typing_extensions==4.12.2
         
     | 
| 49 | 
         
            +
            tzdata==2025.1
         
     | 
| 50 | 
         
            +
            urllib3==2.3.0
         
     | 
| 51 | 
         
            +
            uvicorn==0.34.0
         
     | 
| 52 | 
         
            +
            websockets==15.0
         
     | 
    	
        voice_description_indian.json
    ADDED
    
    | 
         @@ -0,0 +1,198 @@ 
     | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            [
         
     | 
| 2 | 
         
            +
                {
         
     | 
| 3 | 
         
            +
                  "id": 1,
         
     | 
| 4 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his very low-pitched voice with crisp clarity.",
         
     | 
| 5 | 
         
            +
                  "output_file_name": "male_indian_very_low_pitch.mp3"
         
     | 
| 6 | 
         
            +
                },
         
     | 
| 7 | 
         
            +
                {
         
     | 
| 8 | 
         
            +
                  "id": 2,
         
     | 
| 9 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her quite low-pitched voice with crisp clarity.",
         
     | 
| 10 | 
         
            +
                  "output_file_name": "female_indian_quite_low_pitch.mp3"
         
     | 
| 11 | 
         
            +
                },
         
     | 
| 12 | 
         
            +
                {
         
     | 
| 13 | 
         
            +
                  "id": 3,
         
     | 
| 14 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his fairly low-pitched voice with crisp clarity.",
         
     | 
| 15 | 
         
            +
                  "output_file_name": "male_indian_fairly_low_pitch.mp3"
         
     | 
| 16 | 
         
            +
                },
         
     | 
| 17 | 
         
            +
                {
         
     | 
| 18 | 
         
            +
                  "id": 4,
         
     | 
| 19 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her slightly low-pitched voice with crisp clarity.",
         
     | 
| 20 | 
         
            +
                  "output_file_name": "female_indian_slightly_low_pitch.mp3"
         
     | 
| 21 | 
         
            +
                },
         
     | 
| 22 | 
         
            +
                {
         
     | 
| 23 | 
         
            +
                  "id": 5,
         
     | 
| 24 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her slightly high-pitched voice with crisp clarity.",
         
     | 
| 25 | 
         
            +
                  "output_file_name": "female_indian_slightly_high_pitch.mp3"
         
     | 
| 26 | 
         
            +
                },
         
     | 
| 27 | 
         
            +
                {
         
     | 
| 28 | 
         
            +
                  "id": 6,
         
     | 
| 29 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his fairly high-pitched voice with crisp clarity.",
         
     | 
| 30 | 
         
            +
                  "output_file_name": "male_indian_fairly_high_pitch.mp3"
         
     | 
| 31 | 
         
            +
                },
         
     | 
| 32 | 
         
            +
                {
         
     | 
| 33 | 
         
            +
                  "id": 7,
         
     | 
| 34 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her quite high-pitched voice with crisp clarity.",
         
     | 
| 35 | 
         
            +
                  "output_file_name": "female_indian_quite_high_pitch.mp3"
         
     | 
| 36 | 
         
            +
                },
         
     | 
| 37 | 
         
            +
                {
         
     | 
| 38 | 
         
            +
                  "id": 8,
         
     | 
| 39 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his very high-pitched voice with crisp clarity.",
         
     | 
| 40 | 
         
            +
                  "output_file_name": "male_indian_very_high_pitch.mp3"
         
     | 
| 41 | 
         
            +
                },
         
     | 
| 42 | 
         
            +
                {
         
     | 
| 43 | 
         
            +
                  "id": 9,
         
     | 
| 44 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. Her tone is very monotone.",
         
     | 
| 45 | 
         
            +
                  "output_file_name": "female_indian_monotone.mp3"
         
     | 
| 46 | 
         
            +
                },
         
     | 
| 47 | 
         
            +
                {
         
     | 
| 48 | 
         
            +
                  "id": 10,
         
     | 
| 49 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. Her tone is quite monotone.",
         
     | 
| 50 | 
         
            +
                  "output_file_name": "female_indian_quite_monotone.mp3"
         
     | 
| 51 | 
         
            +
                },
         
     | 
| 52 | 
         
            +
                {
         
     | 
| 53 | 
         
            +
                  "id": 11,
         
     | 
| 54 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity. His tone is fairly monotone.",
         
     | 
| 55 | 
         
            +
                  "output_file_name": "male_indian_fairly_monotone.mp3"
         
     | 
| 56 | 
         
            +
                },
         
     | 
| 57 | 
         
            +
                {
         
     | 
| 58 | 
         
            +
                  "id": 12,
         
     | 
| 59 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. Her tone is slightly monotone.",
         
     | 
| 60 | 
         
            +
                  "output_file_name": "female_indian_slightly_monotone.mp3"
         
     | 
| 61 | 
         
            +
                },
         
     | 
| 62 | 
         
            +
                {
         
     | 
| 63 | 
         
            +
                  "id": 13,
         
     | 
| 64 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity. His tone is slightly expressive and animated.",
         
     | 
| 65 | 
         
            +
                  "output_file_name": "male_indian_slightly_expressive.mp3"
         
     | 
| 66 | 
         
            +
                },
         
     | 
| 67 | 
         
            +
                {
         
     | 
| 68 | 
         
            +
                  "id": 14,
         
     | 
| 69 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. Her tone is fairly expressive and animated.",
         
     | 
| 70 | 
         
            +
                  "output_file_name": "female_indian_fairly_expressive.mp3"
         
     | 
| 71 | 
         
            +
                },
         
     | 
| 72 | 
         
            +
                {
         
     | 
| 73 | 
         
            +
                  "id": 15,
         
     | 
| 74 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity. His tone is quite expressive and animated.",
         
     | 
| 75 | 
         
            +
                  "output_file_name": "male_indian_quite_expressive.mp3"
         
     | 
| 76 | 
         
            +
                },
         
     | 
| 77 | 
         
            +
                {
         
     | 
| 78 | 
         
            +
                  "id": 16,
         
     | 
| 79 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. Her tone is very expressive and animated.",
         
     | 
| 80 | 
         
            +
                  "output_file_name": "female_indian_very_expressive.mp3"
         
     | 
| 81 | 
         
            +
                },
         
     | 
| 82 | 
         
            +
                {
         
     | 
| 83 | 
         
            +
                  "id": 17,
         
     | 
| 84 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity. He reads the book very slowly.",
         
     | 
| 85 | 
         
            +
                  "output_file_name": "male_indian_very_slow.mp3"
         
     | 
| 86 | 
         
            +
                },
         
     | 
| 87 | 
         
            +
                {
         
     | 
| 88 | 
         
            +
                  "id": 18,
         
     | 
| 89 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. She reads the book quite slowly.",
         
     | 
| 90 | 
         
            +
                  "output_file_name": "female_indian_quite_slow.mp3"
         
     | 
| 91 | 
         
            +
                },
         
     | 
| 92 | 
         
            +
                {
         
     | 
| 93 | 
         
            +
                  "id": 19,
         
     | 
| 94 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity. He reads the book fairly slowly.",
         
     | 
| 95 | 
         
            +
                  "output_file_name": "male_indian_fairly_slow.mp3"
         
     | 
| 96 | 
         
            +
                },
         
     | 
| 97 | 
         
            +
                {
         
     | 
| 98 | 
         
            +
                  "id": 20,
         
     | 
| 99 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. She reads the book slightly slowly.",
         
     | 
| 100 | 
         
            +
                  "output_file_name": "female_indian_slightly_slow.mp3"
         
     | 
| 101 | 
         
            +
                },
         
     | 
| 102 | 
         
            +
                {
         
     | 
| 103 | 
         
            +
                  "id": 21,
         
     | 
| 104 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity. He reads the book slightly quickly.",
         
     | 
| 105 | 
         
            +
                  "output_file_name": "male_indian_slightly_quick.mp3"
         
     | 
| 106 | 
         
            +
                },
         
     | 
| 107 | 
         
            +
                {
         
     | 
| 108 | 
         
            +
                  "id": 22,
         
     | 
| 109 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. She reads the book fairly quickly.",
         
     | 
| 110 | 
         
            +
                  "output_file_name": "female_indian_fairly_quick.mp3"
         
     | 
| 111 | 
         
            +
                },
         
     | 
| 112 | 
         
            +
                {
         
     | 
| 113 | 
         
            +
                  "id": 23,
         
     | 
| 114 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity. He reads the book quite quickly.",
         
     | 
| 115 | 
         
            +
                  "output_file_name": "male_indian_quite_quick.mp3"
         
     | 
| 116 | 
         
            +
                },
         
     | 
| 117 | 
         
            +
                {
         
     | 
| 118 | 
         
            +
                  "id": 24,
         
     | 
| 119 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity. She reads the book very quickly.",
         
     | 
| 120 | 
         
            +
                  "output_file_name": "female_indian_very_quick.mp3"
         
     | 
| 121 | 
         
            +
                },
         
     | 
| 122 | 
         
            +
                {
         
     | 
| 123 | 
         
            +
                  "id": 25,
         
     | 
| 124 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The recording is very bad, and the speaker's voice is very distant-sounding and noisy.",
         
     | 
| 125 | 
         
            +
                  "output_file_name": "male_indian_bad_recording.mp3"
         
     | 
| 126 | 
         
            +
                },
         
     | 
| 127 | 
         
            +
                {
         
     | 
| 128 | 
         
            +
                  "id": 26,
         
     | 
| 129 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is quite close-sounding but very noisy.",
         
     | 
| 130 | 
         
            +
                  "output_file_name": "female_indian_noisy.mp3"
         
     | 
| 131 | 
         
            +
                },
         
     | 
| 132 | 
         
            +
                {
         
     | 
| 133 | 
         
            +
                  "id": 27,
         
     | 
| 134 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is close-sounding but fairly noisy.",
         
     | 
| 135 | 
         
            +
                  "output_file_name": "male_indian_fairly_noisy.mp3"
         
     | 
| 136 | 
         
            +
                },
         
     | 
| 137 | 
         
            +
                {
         
     | 
| 138 | 
         
            +
                  "id": 28,
         
     | 
| 139 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is fairly distant-sounding.",
         
     | 
| 140 | 
         
            +
                  "output_file_name": "male_indian_fairly_distant.mp3"
         
     | 
| 141 | 
         
            +
                },
         
     | 
| 142 | 
         
            +
                {
         
     | 
| 143 | 
         
            +
                  "id": 29,
         
     | 
| 144 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is slightly distant-sounding.",
         
     | 
| 145 | 
         
            +
                  "output_file_name": "female_indian_slightly_distant.mp3"
         
     | 
| 146 | 
         
            +
                },
         
     | 
| 147 | 
         
            +
                {
         
     | 
| 148 | 
         
            +
                  "id": 30,
         
     | 
| 149 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is fairly close-sounding.",
         
     | 
| 150 | 
         
            +
                  "output_file_name": "male_indian_fairly_close.mp3"
         
     | 
| 151 | 
         
            +
                },
         
     | 
| 152 | 
         
            +
                {
         
     | 
| 153 | 
         
            +
                  "id": 31,
         
     | 
| 154 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is quite close-sounding and quite clean.",
         
     | 
| 155 | 
         
            +
                  "output_file_name": "male_indian_quite_clean.mp3"
         
     | 
| 156 | 
         
            +
                },
         
     | 
| 157 | 
         
            +
                {
         
     | 
| 158 | 
         
            +
                  "id": 32,
         
     | 
| 159 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding and clean, and the recording is excellent, capturing her voice with crisp clarity.",
         
     | 
| 160 | 
         
            +
                  "output_file_name": "female_indian_clean.mp3"
         
     | 
| 161 | 
         
            +
                },
         
     | 
| 162 | 
         
            +
                {
         
     | 
| 163 | 
         
            +
                  "id": 33,
         
     | 
| 164 | 
         
            +
                  "voice_description": "A male voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity.",
         
     | 
| 165 | 
         
            +
                  "output_file_name": "male_indian_accent.mp3"
         
     | 
| 166 | 
         
            +
                },
         
     | 
| 167 | 
         
            +
                {
         
     | 
| 168 | 
         
            +
                  "id": 34,
         
     | 
| 169 | 
         
            +
                  "voice_description": "A male voice with an English accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity.",
         
     | 
| 170 | 
         
            +
                  "output_file_name": "male_english_accent.mp3"
         
     | 
| 171 | 
         
            +
                },
         
     | 
| 172 | 
         
            +
                {
         
     | 
| 173 | 
         
            +
                  "id": 35,
         
     | 
| 174 | 
         
            +
                  "voice_description": "A male voice with a Pakistani accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity.",
         
     | 
| 175 | 
         
            +
                  "output_file_name": "male_pakistani_accent.mp3"
         
     | 
| 176 | 
         
            +
                },
         
     | 
| 177 | 
         
            +
                {
         
     | 
| 178 | 
         
            +
                  "id": 36,
         
     | 
| 179 | 
         
            +
                  "voice_description": "A female voice with an Italian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity.",
         
     | 
| 180 | 
         
            +
                  "output_file_name": "female_italian_accent.mp3"
         
     | 
| 181 | 
         
            +
                },
         
     | 
| 182 | 
         
            +
                {
         
     | 
| 183 | 
         
            +
                  "id": 37,
         
     | 
| 184 | 
         
            +
                  "voice_description": "A male voice with a South African accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity.",
         
     | 
| 185 | 
         
            +
                  "output_file_name": "male_south_african_accent.mp3"
         
     | 
| 186 | 
         
            +
                },
         
     | 
| 187 | 
         
            +
                {
         
     | 
| 188 | 
         
            +
                  "id": 38,
         
     | 
| 189 | 
         
            +
                  "voice_description": "A male voice with a Canadian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing his voice with crisp clarity.",
         
     | 
| 190 | 
         
            +
                  "output_file_name": "male_canadian_accent.mp3"
         
     | 
| 191 | 
         
            +
                },
         
     | 
| 192 | 
         
            +
                {
         
     | 
| 193 | 
         
            +
                  "id": 39,
         
     | 
| 194 | 
         
            +
                  "voice_description": "A female voice with an Indian accent enunciates every word with precision. The speaker's voice is very close-sounding, and the recording is excellent, capturing her voice with crisp clarity.",
         
     | 
| 195 | 
         
            +
                  "output_file_name": "female_indian_accent.mp3"
         
     | 
| 196 | 
         
            +
                }
         
     | 
| 197 | 
         
            +
              ]
         
     | 
| 198 | 
         
            +
              
         
     |