Repository: woheller69/ttsEngine Branch: master Commit: 65b3f1a4a96b Files: 455 Total size: 297.8 KB Directory structure: gitextract_z5s892v4/ ├── .gitignore ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── assets/ │ │ ├── .gitkeep │ │ └── espeak-ng-data/ │ │ ├── af_dict │ │ ├── am_dict │ │ ├── an_dict │ │ ├── ar_dict │ │ ├── as_dict │ │ ├── az_dict │ │ ├── ba_dict │ │ ├── be_dict │ │ ├── bg_dict │ │ ├── bn_dict │ │ ├── bpy_dict │ │ ├── bs_dict │ │ ├── ca_dict │ │ ├── chr_dict │ │ ├── cmn_dict │ │ ├── cs_dict │ │ ├── cv_dict │ │ ├── cy_dict │ │ ├── da_dict │ │ ├── de_dict │ │ ├── el_dict │ │ ├── en_dict │ │ ├── eo_dict │ │ ├── es_dict │ │ ├── et_dict │ │ ├── eu_dict │ │ ├── fa_dict │ │ ├── fi_dict │ │ ├── fr_dict │ │ ├── ga_dict │ │ ├── gd_dict │ │ ├── gn_dict │ │ ├── grc_dict │ │ ├── gu_dict │ │ ├── hak_dict │ │ ├── haw_dict │ │ ├── he_dict │ │ ├── hi_dict │ │ ├── hr_dict │ │ ├── ht_dict │ │ ├── hu_dict │ │ ├── hy_dict │ │ ├── ia_dict │ │ ├── id_dict │ │ ├── intonations │ │ ├── io_dict │ │ ├── is_dict │ │ ├── it_dict │ │ ├── ja_dict │ │ ├── jbo_dict │ │ ├── ka_dict │ │ ├── kk_dict │ │ ├── kl_dict │ │ ├── kn_dict │ │ ├── ko_dict │ │ ├── kok_dict │ │ ├── ku_dict │ │ ├── ky_dict │ │ ├── la_dict │ │ ├── lang/ │ │ │ ├── aav/ │ │ │ │ ├── vi │ │ │ │ ├── vi-VN-x-central │ │ │ │ └── vi-VN-x-south │ │ │ ├── art/ │ │ │ │ ├── eo │ │ │ │ ├── ia │ │ │ │ ├── io │ │ │ │ ├── jbo │ │ │ │ ├── lfn │ │ │ │ ├── piqd │ │ │ │ ├── py │ │ │ │ ├── qdb │ │ │ │ ├── qya │ │ │ │ └── sjn │ │ │ ├── azc/ │ │ │ │ └── nci │ │ │ ├── bat/ │ │ │ │ ├── lt │ │ │ │ ├── ltg │ │ │ │ └── lv │ │ │ ├── bnt/ │ │ │ │ ├── sw │ │ │ │ └── tn │ │ │ ├── ccs/ │ │ │ │ └── ka │ │ │ ├── cel/ │ │ │ │ ├── cy │ │ │ │ ├── ga │ │ │ │ └── gd │ │ │ ├── cus/ │ │ │ │ └── om │ │ │ ├── dra/ │ │ │ │ ├── kn │ │ │ │ ├── ml │ │ │ │ ├── ta │ │ │ │ └── te │ │ │ ├── esx/ │ │ │ │ └── kl │ │ │ ├── eu │ │ │ ├── gmq/ │ │ │ │ ├── da │ │ │ │ ├── is │ │ │ │ ├── nb │ │ │ │ └── sv │ │ │ ├── gmw/ │ │ │ │ ├── af │ │ │ │ ├── de │ │ │ │ ├── en │ │ │ │ ├── en-029 │ │ │ │ ├── en-GB-scotland │ │ │ │ ├── en-GB-x-gbclan │ │ │ │ ├── en-GB-x-gbcwmd │ │ │ │ ├── en-GB-x-rp │ │ │ │ ├── en-US │ │ │ │ ├── en-US-nyc │ │ │ │ ├── lb │ │ │ │ └── nl │ │ │ ├── grk/ │ │ │ │ ├── el │ │ │ │ └── grc │ │ │ ├── inc/ │ │ │ │ ├── as │ │ │ │ ├── bn │ │ │ │ ├── bpy │ │ │ │ ├── gu │ │ │ │ ├── hi │ │ │ │ ├── kok │ │ │ │ ├── mr │ │ │ │ ├── ne │ │ │ │ ├── or │ │ │ │ ├── pa │ │ │ │ ├── sd │ │ │ │ ├── si │ │ │ │ └── ur │ │ │ ├── ine/ │ │ │ │ ├── hy │ │ │ │ ├── hyw │ │ │ │ └── sq │ │ │ ├── ira/ │ │ │ │ ├── fa │ │ │ │ ├── fa-Latn │ │ │ │ └── ku │ │ │ ├── iro/ │ │ │ │ └── chr │ │ │ ├── itc/ │ │ │ │ └── la │ │ │ ├── jpx/ │ │ │ │ └── ja │ │ │ ├── ko │ │ │ ├── map/ │ │ │ │ └── haw │ │ │ ├── miz/ │ │ │ │ └── mto │ │ │ ├── myn/ │ │ │ │ └── quc │ │ │ ├── poz/ │ │ │ │ ├── id │ │ │ │ ├── mi │ │ │ │ └── ms │ │ │ ├── qu │ │ │ ├── roa/ │ │ │ │ ├── an │ │ │ │ ├── ca │ │ │ │ ├── es │ │ │ │ ├── es-419 │ │ │ │ ├── fr │ │ │ │ ├── fr-BE │ │ │ │ ├── fr-CH │ │ │ │ ├── ht │ │ │ │ ├── it │ │ │ │ ├── pap │ │ │ │ ├── pt │ │ │ │ ├── pt-BR │ │ │ │ └── ro │ │ │ ├── sai/ │ │ │ │ └── gn │ │ │ ├── sem/ │ │ │ │ ├── am │ │ │ │ ├── ar │ │ │ │ ├── he │ │ │ │ └── mt │ │ │ ├── sit/ │ │ │ │ ├── cmn │ │ │ │ ├── cmn-Latn-pinyin │ │ │ │ ├── hak │ │ │ │ ├── my │ │ │ │ ├── yue │ │ │ │ └── yue-Latn-jyutping │ │ │ ├── tai/ │ │ │ │ ├── shn │ │ │ │ └── th │ │ │ ├── trk/ │ │ │ │ ├── az │ │ │ │ ├── ba │ │ │ │ ├── cv │ │ │ │ ├── kk │ │ │ │ ├── ky │ │ │ │ ├── nog │ │ │ │ ├── tk │ │ │ │ ├── tr │ │ │ │ ├── tt │ │ │ │ ├── ug │ │ │ │ └── uz │ │ │ ├── urj/ │ │ │ │ ├── et │ │ │ │ ├── fi │ │ │ │ ├── hu │ │ │ │ └── smj │ │ │ ├── zle/ │ │ │ │ ├── be │ │ │ │ ├── ru │ │ │ │ ├── ru-LV │ │ │ │ ├── ru-cl │ │ │ │ └── uk │ │ │ ├── zls/ │ │ │ │ ├── bg │ │ │ │ ├── bs │ │ │ │ ├── hr │ │ │ │ ├── mk │ │ │ │ ├── sl │ │ │ │ └── sr │ │ │ └── zlw/ │ │ │ ├── cs │ │ │ ├── pl │ │ │ └── sk │ │ ├── lb_dict │ │ ├── lfn_dict │ │ ├── lt_dict │ │ ├── lv_dict │ │ ├── mi_dict │ │ ├── mk_dict │ │ ├── ml_dict │ │ ├── mr_dict │ │ ├── ms_dict │ │ ├── mt_dict │ │ ├── mto_dict │ │ ├── my_dict │ │ ├── nci_dict │ │ ├── ne_dict │ │ ├── nl_dict │ │ ├── no_dict │ │ ├── nog_dict │ │ ├── om_dict │ │ ├── or_dict │ │ ├── pa_dict │ │ ├── pap_dict │ │ ├── phondata │ │ ├── phondata-manifest │ │ ├── phonindex │ │ ├── phontab │ │ ├── piqd_dict │ │ ├── pl_dict │ │ ├── pt_dict │ │ ├── py_dict │ │ ├── qdb_dict │ │ ├── qu_dict │ │ ├── quc_dict │ │ ├── qya_dict │ │ ├── ro_dict │ │ ├── ru_dict │ │ ├── sd_dict │ │ ├── shn_dict │ │ ├── si_dict │ │ ├── sjn_dict │ │ ├── sk_dict │ │ ├── sl_dict │ │ ├── smj_dict │ │ ├── sq_dict │ │ ├── sr_dict │ │ ├── sv_dict │ │ ├── sw_dict │ │ ├── ta_dict │ │ ├── te_dict │ │ ├── th_dict │ │ ├── tk_dict │ │ ├── tn_dict │ │ ├── tr_dict │ │ ├── tt_dict │ │ ├── ug_dict │ │ ├── uk_dict │ │ ├── ur_dict │ │ ├── uz_dict │ │ ├── vi_dict │ │ ├── voices/ │ │ │ └── !v/ │ │ │ ├── Alex │ │ │ ├── Alicia │ │ │ ├── Andrea │ │ │ ├── Andy │ │ │ ├── Annie │ │ │ ├── AnxiousAndy │ │ │ ├── Demonic │ │ │ ├── Denis │ │ │ ├── Diogo │ │ │ ├── Gene │ │ │ ├── Gene2 │ │ │ ├── Henrique │ │ │ ├── Hugo │ │ │ ├── Jacky │ │ │ ├── Lee │ │ │ ├── Marco │ │ │ ├── Mario │ │ │ ├── Michael │ │ │ ├── Mike │ │ │ ├── Mr serious │ │ │ ├── Nguyen │ │ │ ├── Reed │ │ │ ├── RicishayMax │ │ │ ├── RicishayMax2 │ │ │ ├── RicishayMax3 │ │ │ ├── Storm │ │ │ ├── Tweaky │ │ │ ├── UniRobot │ │ │ ├── adam │ │ │ ├── anika │ │ │ ├── anikaRobot │ │ │ ├── announcer │ │ │ ├── antonio │ │ │ ├── aunty │ │ │ ├── belinda │ │ │ ├── benjamin │ │ │ ├── boris │ │ │ ├── caleb │ │ │ ├── croak │ │ │ ├── david │ │ │ ├── ed │ │ │ ├── edward │ │ │ ├── edward2 │ │ │ ├── f1 │ │ │ ├── f2 │ │ │ ├── f3 │ │ │ ├── f4 │ │ │ ├── f5 │ │ │ ├── fast │ │ │ ├── grandma │ │ │ ├── grandpa │ │ │ ├── gustave │ │ │ ├── ian │ │ │ ├── iven │ │ │ ├── iven2 │ │ │ ├── iven3 │ │ │ ├── iven4 │ │ │ ├── john │ │ │ ├── kaukovalta │ │ │ ├── klatt │ │ │ ├── klatt2 │ │ │ ├── klatt3 │ │ │ ├── klatt4 │ │ │ ├── klatt5 │ │ │ ├── klatt6 │ │ │ ├── linda │ │ │ ├── m1 │ │ │ ├── m2 │ │ │ ├── m3 │ │ │ ├── m4 │ │ │ ├── m5 │ │ │ ├── m6 │ │ │ ├── m7 │ │ │ ├── m8 │ │ │ ├── marcelo │ │ │ ├── max │ │ │ ├── michel │ │ │ ├── miguel │ │ │ ├── mike2 │ │ │ ├── norbert │ │ │ ├── pablo │ │ │ ├── paul │ │ │ ├── pedro │ │ │ ├── quincy │ │ │ ├── rob │ │ │ ├── robert │ │ │ ├── robosoft │ │ │ ├── robosoft2 │ │ │ ├── robosoft3 │ │ │ ├── robosoft4 │ │ │ ├── robosoft5 │ │ │ ├── robosoft6 │ │ │ ├── robosoft7 │ │ │ ├── robosoft8 │ │ │ ├── sandro │ │ │ ├── shelby │ │ │ ├── steph │ │ │ ├── steph2 │ │ │ ├── steph3 │ │ │ ├── travis │ │ │ ├── victor │ │ │ ├── whisper │ │ │ ├── whisperf │ │ │ └── zac │ │ └── yue_dict │ ├── java/ │ │ └── com/ │ │ └── k2fsa/ │ │ └── sherpa/ │ │ └── onnx/ │ │ └── tts/ │ │ └── engine/ │ │ ├── CheckVoiceData.kt │ │ ├── Downloader.java │ │ ├── GetSampleText.kt │ │ ├── GithubStar.java │ │ ├── InstallVoiceData.kt │ │ ├── LangDB.java │ │ ├── Language.java │ │ ├── MainActivity.kt │ │ ├── ManageLanguagesActivity.kt │ │ ├── Migrate.java │ │ ├── PreferenceHelper.kt │ │ ├── ThemeUtil.java │ │ ├── TtsEngine.kt │ │ └── TtsService.kt │ └── res/ │ ├── drawable/ │ │ ├── ic_add_24dp.xml │ │ ├── ic_delete_24dp.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_launcher_foreground_monochrome.xml │ │ ├── ic_play_24dp.xml │ │ ├── ic_stop_24dp.xml │ │ ├── rounded_frame_thin.xml │ │ └── rounded_solid.xml │ ├── layout/ │ │ ├── activity_manage_languages.xml │ │ ├── dialog_install_custom_model.xml │ │ └── list_item.xml │ ├── mipmap-anydpi-v26/ │ │ └── ic_launcher.xml │ ├── values/ │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── ic_launcher_background.xml │ │ ├── strings.xml │ │ └── themes.xml │ ├── values-cs/ │ │ └── strings.xml │ ├── values-de/ │ │ └── strings.xml │ ├── values-hu/ │ │ └── strings.xml │ ├── values-it/ │ │ └── strings.xml │ ├── values-pt-rBR/ │ │ └── strings.xml │ ├── values-ro/ │ │ └── strings.xml │ ├── values-ru/ │ │ └── strings.xml │ ├── values-tr/ │ │ └── strings.xml │ └── xml/ │ ├── data_extraction_rules.xml │ └── tts_engine.xml ├── build.gradle.kts ├── fastlane/ │ └── metadata/ │ └── android/ │ ├── cs-CZ/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── en-US/ │ │ ├── changelogs/ │ │ │ ├── 12.txt │ │ │ ├── 13.txt │ │ │ ├── 14.txt │ │ │ ├── 15.txt │ │ │ ├── 16.txt │ │ │ ├── 17.txt │ │ │ ├── 18.txt │ │ │ ├── 19.txt │ │ │ ├── 20.txt │ │ │ ├── 21.txt │ │ │ ├── 22.txt │ │ │ ├── 23.txt │ │ │ ├── 24.txt │ │ │ ├── 25.txt │ │ │ ├── 26.txt │ │ │ ├── 27.txt │ │ │ ├── 28.txt │ │ │ ├── 29.txt │ │ │ ├── 30.txt │ │ │ └── 31.txt │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── hu-HU/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── it-IT/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── pt-BR/ │ │ ├── full_description.txt │ │ └── short_description.txt │ ├── ro/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ ├── ru-RU/ │ │ ├── full_description.txt │ │ ├── short_description.txt │ │ └── title.txt │ └── tr-TR/ │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── language.txt └── settings.gradle.kts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ *.iml .gradle /local.properties ./idea /.idea/caches /.idea/libraries /.idea/modules.xml /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml .DS_Store /build /captures .externalNativeBuild .cxx local.properties /.idea/kotlinc.xml ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: README.md ================================================ ``` Google has announced that, starting in 2026/2027, all apps on certified Android devices will require the developer to submit personal identity details directly to Google. Since the developers of this app do not agree to this requirement, this app will no longer work on certified Android devices after that time. ``` ## Donate
Send a coffee to 
woheller69@t-online.de 


  
Or via this link (with fees)
# SherpaTTS SherpaTTS is an Android Text-to-Speech engine based on Next-gen Kaldi. It uses voices from [Piper Voices](https://rhasspy.github.io/piper-samples/) or [Coqui](https://github.com/coqui-ai/TTS/). [](https://f-droid.org/de/packages/org.woheller69.ttsengine/) []( https://www.openapk.net/ttsengine/org.woheller69.ttsengine/) ## Installing Voice Models ### From Hugging Face The app provides a built-in model downloader that lets you install Piper and Coqui voice models directly from the "Manage Languages" screen. Simply select a language and the app will download and install the model automatically. Please note that this is the only instance where internet permission is required. Once the model is downloaded, text-to-speech works entirely offline, ensuring your privacy and convenience. Voices can be tested [here](https://huggingface.co/spaces/k2-fsa/text-to-speech/). ### From SD Card (Sideloading) You can install custom Piper models directly from your device storage: 1. Open the app and go to "Manage Languages" 2. Tap "Install from SD Card" 3. Enter a 3-letter language code (e.g., `eng`, `deu`, `fra`) 4. Enter a model name (this will be displayed in the language list) 5. Select your model file (`.onnx` format) 6. Select your tokens file (`.txt` format) 7. Tap "OK" **Requirements:** - The model file must be in `.onnx` format (make sure the model has been converted a described here: [Sherpa ONNX conversion](https://k2-fsa.github.io/sherpa/onnx/tts/piper.html)) - The tokens file must contain the vocabulary mapping (typically `tokens.txt`) ### Via ADB (Alternative Method) You can also install models via ADB: 1. Create a directory: `modelDir` in `sdcard/Android/data/org.woheller69.ttsengine/files` 2. Place 3 files there: - `model.onnx` - The converted model file - `tokens.txt` - The vocabulary file - `lang` - A text file with: - Line 1: 3-letter language code (e.g., `eng`) - Line 2: Model name At next start, the app will migrate it to the new directory structure and add it to installed languages. Make sure the model has been converted a described here: [Sherpa ONNX conversion](https://k2-fsa.github.io/sherpa/onnx/tts/piper.html) ## Contribute For translations use https://toolate.othing.xyz/projects/sherpatts/ # License This work is licensed under GPLv3 license, © woheller69 - This app is based on the [Sherpa ONNX Project](https://github.com/k2-fsa/sherpa-onnx), published under Apache-2.0 license - It uses data from [eSpeak NG](https://github.com/espeak-ng/espeak-ng), published under GPLv3 license - It uses [jsoup](https://github.com/jhy/jsoup), published under MIT license - At first start it downloads and installs a Piper or Coqui voice model from Hugging Face. # OTHER APPS | **RadarWeather** | **Gas Prices** | **Smart Eggtimer** | |:---:|:---:|:--:| | [](https://f-droid.org/packages/org.woheller69.weather/) | [](https://f-droid.org/packages/org.woheller69.spritpreise/) | [](https://f-droid.org/packages/org.woheller69.eggtimer/) | | **Bubble** | **hEARtest** | **GPS Cockpit** | | [](https://f-droid.org/packages/org.woheller69.level/) | [](https://f-droid.org/packages/org.woheller69.audiometry/) | [](https://f-droid.org/packages/org.woheller69.gpscockpit/) | | **Audio Analyzer** | **LavSeeker** | **TimeLapseCam** | | [](https://f-droid.org/packages/org.woheller69.audio_analyzer_for_android/) |[](https://f-droid.org/packages/org.woheller69.lavatories/) | [](https://f-droid.org/packages/org.woheller69.TimeLapseCam/) | | **Arity** | **Cirrus** | **solXpect** | | [](https://f-droid.org/packages/org.woheller69.arity/) | [](https://f-droid.org/packages/org.woheller69.omweather/) | [](https://f-droid.org/packages/org.woheller69.solxpect/) | | **gptAssist** | **dumpSeeker** | **huggingAssist** | | [](https://f-droid.org/packages/org.woheller69.gptassist/) | [](https://f-droid.org/packages/org.woheller69.dumpseeker/) | [](https://f-droid.org/packages/org.woheller69.hugassist/) | | **FREE Browser** | **whoBIRD** | **PeakOrama** | | [](https://f-droid.org/packages/org.woheller69.browser/) | [](https://f-droid.org/packages/org.woheller69.whobird/) | [](https://f-droid.org/packages/org.woheller69.PeakOrama/) | | **Whisper** | **Seamless** | **SherpaTTS** | | [](https://f-droid.org/packages/org.woheller69.whisper/) | [](https://f-droid.org/packages/org.woheller69.seemless/) | [](https://f-droid.org/packages/org.woheller69.ttsengine/) | ================================================ FILE: app/.gitignore ================================================ /build /release/output-metadata.json ================================================ FILE: app/build.gradle.kts ================================================ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { namespace = "com.k2fsa.sherpa.onnx.tts.engine" compileSdk = 35 defaultConfig { applicationId = "org.woheller69.ttsengine" minSdk = 29 targetSdk = 35 versionCode = 31 versionName = "3.1" vectorDrawables { useSupportLibrary = true } buildFeatures { viewBinding = true buildConfig = true compose = true } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) ndk { abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a")) } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } composeOptions { kotlinCompilerExtensionVersion = "1.5.1" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } lint { disable += "MissingTranslation" } } dependencies { implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") implementation("androidx.activity:activity-compose:1.8.2") implementation(platform("androidx.compose:compose-bom:2023.08.00")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.9.0") implementation("com.github.k2-fsa:sherpa-onnx:v1.10.42") implementation("androidx.preference:preference:1.2.1") implementation("com.github.woheller69:FreeDroidWarn:+") implementation("org.jsoup:jsoup:1.22.1") } ================================================ FILE: app/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile ================================================ FILE: app/src/main/AndroidManifest.xml ================================================ ================================================ FILE: app/src/main/assets/.gitkeep ================================================ ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/aav/vi ================================================ name Vietnamese (Northern) language vi words 1 2 pitch 95 175 tone 100 225 800 100 2000 50 5400 75 8000 200 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/aav/vi-VN-x-central ================================================ name Vietnamese (Central) language vi-vn-x-central phonemes vi-hue dictrules 1 words 1 pitch 82 118 //80 118 voicing 90 //18 flutter 20 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/aav/vi-VN-x-south ================================================ name Vietnamese (Southern) language vi-vn-x-south phonemes vi-sgn dictrules 2 words 1 pitch 82 118 //80 118 voicing 90 //18 flutter 20 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/eo ================================================ name Esperanto language eo apostrophe 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/ia ================================================ name Interlingua language ia ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/io ================================================ name Ido language io phonemes eo status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/jbo ================================================ name Lojban language jbo speed 80 // speed adjustment, percentage ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/lfn ================================================ name Lingua Franca Nova language lfn phonemes base2 l_unpronouncable 0 numbers 2 3 stressLength 150 140 180 180 0 0 200 200 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/piqd ================================================ name Klingon language piqd status testing stressRule 3 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/py ================================================ name Pyash language py maintainer Logan Streondj status testing speed 80 // speed adjustment, percentage stressRule 0 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/qdb ================================================ name Lang Belta language qdb numbers 4 3 replace 1 t ? ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/qya ================================================ name Quenya language qya stressRule 2 // rule=penultimate, with qya_rules for light penultimate syllables to move primary stress to the preceding (antepenultimate) syllable ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/art/sjn ================================================ name Sindarin language sjn stressRule 2 // rule=penultimate, with sjn_rules for light penultimate syllables to move primary stress to the preceding (antepenultimate) syllable ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/azc/nci ================================================ name Nahuatl (Classical) language nci intonation 3 stressRule 2 stressLength 190 190 200 200 0 0 220 240 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/bat/lt ================================================ name Lithuanian language lt ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/bat/ltg ================================================ name Latgalian language ltg maintainer Valdis Vitolins status testing phonemes lv dictionary lv dictrules 2 // Setting for Latgalian pronunciation words 0 2 pitch 64 118 tone 60 150 204 100 400 255 700 10 3000 255 stressAmp 12 10 8 8 0 0 15 16 stressLength 160 140 200 140 0 0 240 160 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/bat/lv ================================================ name Latvian language lv maintainer Valdis Vitolins status mature words 0 2 pitch 67 123 tone 60 150 204 100 400 255 700 10 3000 255 stressAmp 11 8 11 9 0 0 14 12 stressLength 160 120 200 130 0 0 230 180 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/bnt/sw ================================================ name Swahili language sw status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/bnt/tn ================================================ name Setswana language tn status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ccs/ka ================================================ name Georgian language ka lowercaseSentence // A period followed by a lowercase letter is considered a sentence (mkhedruli) ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/cel/cy ================================================ name Welsh language cy intonation 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/cel/ga ================================================ name Gaelic (Irish) language ga dictrules 1 // fix for eclipsis ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/cel/gd ================================================ name Gaelic (Scottish) language gd status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/cus/om ================================================ name Oromo language om status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/dra/kn ================================================ name Kannada language kn intonation 2 //consonants 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/dra/ml ================================================ name Malayalam language ml intonation 2 //consonants 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/dra/ta ================================================ name Tamil language ta intonation 2 consonants 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/dra/te ================================================ name Telugu language te status testing intonation 2 //consonants 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/esx/kl ================================================ name Greenlandic language kl ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/eu ================================================ name Basque language eu status testing stressRule 15 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmq/da ================================================ name Danish language da tunes s2 c2 q2 e2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmq/is ================================================ name Icelandic language is ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmq/nb ================================================ name Norwegian Bokmål language nb language no phonemes no dictionary no intonation 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmq/sv ================================================ name Swedish language sv ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/af ================================================ name Afrikaans language af maintainer Christo de Klerk status mature roughness 0 pitch 63 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/de ================================================ name German language de tunes s4 c1 q4 e1 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en ================================================ name English (Great Britain) language en-gb 2 language en 2 maintainer Reece H. Dunn status mature tunes s1 c1 q1 e1 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en-029 ================================================ name English (Caribbean) language en-029 language en 10 maintainer Reece H. Dunn status mature phonemes en-wi dictrules 8 stressLength 175 175 175 175 220 220 250 290 replace 00 D d replace 00 T t[ replace 00 U@ o@ replace 03 @ a# replace 03 3 a# replace 03 N n formant 1 98 100 100 formant 2 98 100 100 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-scotland ================================================ name English (Scotland) language en-gb-scotland language en 4 maintainer Reece H. Dunn status mature phonemes en-sc dictrules 2 5 6 7 stressLength 180 130 200 200 0 0 250 270 replace 03 @ V replace 03 I i replace 03 I2 i replace 01 aI aI2 replace 02 a a/ replace 02 u: U ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-x-gbclan ================================================ name English (Lancaster) language en-gb-x-gbclan language en-gb 3 language en 5 maintainer Reece H. Dunn status mature phonemes en-n stressLength 160 150 180 180 220 220 290 290 replace 03 N n replace 03 i I2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-x-gbcwmd ================================================ name English (West Midlands) language en-gb-x-gbcwmd language en-gb 9 language en 9 phonemes en-wm replace 00 h NULL replace 00 o@ O@ dictrules 6 intonation 4 stressAdd 0 0 0 0 0 0 0 20 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-x-rp ================================================ name English (Received Pronunciation) language en-gb-x-rp language en-gb 4 language en 5 maintainer Reece H. Dunn status mature phonemes en-rp replace 00 o@ O@ replace 03 I i replace 03 I2 i replace 03 @ a# replace 03 3 a# ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en-US ================================================ name English (America) language en-us 2 language en 3 maintainer Reece H. Dunn status mature phonemes en-us dictrules 3 6 stressLength 140 120 190 170 0 0 255 300 stressAmp 17 16 19 19 19 19 21 19 replace 03 I i replace 03 I2 i ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/en-US-nyc ================================================ name English (America, New York City) language en-us-nyc maintainer Richard Calvi status testing phonemes en-us-nyc dictrules 3 6 stressLength 140 120 190 170 0 0 255 300 stressAmp 17 16 19 19 19 19 21 19 replace 03 I i replace 03 I2 i ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/lb ================================================ name Luxembourgish language lb ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/gmw/nl ================================================ name Dutch language nl ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/grk/el ================================================ name Greek language el ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/grk/grc ================================================ name Greek (Ancient) language grc stressLength 170 170 190 190 0 0 230 240 dictrules 1 words 3 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/as ================================================ name Assamese language as status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/bn ================================================ name Bengali language bn ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/bpy ================================================ name Bishnupriya Manipuri language bpy ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/gu ================================================ name Gujarati language gu status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/hi ================================================ name Hindi language hi ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/kok ================================================ name Konkani language kok ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/mr ================================================ name Marathi language mr status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/ne ================================================ name Nepali language ne dictrules 1 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/or ================================================ name Oriya language or status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/pa ================================================ name Punjabi language pa ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/sd ================================================ name Sindhi language sd maintainer Ejaz Shah ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/si ================================================ name Sinhala language si status testing intonation 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/inc/ur ================================================ name Urdu language ur maintainer Ejaz Shah status testing stressRule 6 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ine/hy ================================================ name Armenian (East Armenia) language hy language hy-arevela ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ine/hyw ================================================ name Armenian (West Armenia) language hyw language hy-arevmda language hy 8 dictionary hy dictrules 1 phonemes hy // change consonants for West Armenian pronunciation replace 00 b p# replace 00 d t# replace 00 dz ts# replace 00 dZ tS# replace 00 g k# replace 00 p b replace 00 t d replace 00 ts dz replace 00 tS dZ replace 00 k g replace 00 R2 R // ?? ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ine/sq ================================================ name Albanian language sq // add this line to remove 'ë' at the end of words // replace 00 @/ NULL ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ira/fa ================================================ name Persian language fa maintainer Shadyar Khodayari status mature ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ira/fa-Latn ================================================ name Persian (Pinglish) // Sometimes, Farsi speakers write Farsi words using English characters, particularly in Chat and SMS (texte messages).), called Pinglish language fa-latn maintainer Shadyar Khodayari status mature dictrules 1 phonemes fa ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ira/ku ================================================ name Kurdish language ku //words 1 48 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/iro/chr ================================================ name Cherokee //https://github.com/espeak-ng/espeak-ng/blob/master/docs/voices.md language chr-US-Qaaa-x-west 5 maintainer Michael Conrad status testing pitch 90 160 voicing 100 consonants 100 100 speed 100 words 2 1 phonemes chr //stress on all syllables to simulate stress on no syllables stressRule 9 stressLength 175 175 175 175 175 175 175 175 //all vowels the same length regardless of stress stressAmp 10 10 10 10 10 10 10 10 //all vowels the same strength regardless of marked stress intonation 1 tunes chrs chrc chrq chre ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/itc/la ================================================ name Latin language la stressRule 2 0 2 // rule=penultimate // unstressed_wd1=0 // unstressed_wd2=2 stressOpt 0 5 // flags=0100001 (no automatic secondary stress + don't stres monosyllables) // short gap between words words 2 // Note: The Latin voice needs long vowels to be marked with macrons ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/jpx/ja ================================================ name Japanese language ja phonemes ja intonation 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/ko ================================================ name Korean language ko pitch 80 118 intonation 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/map/haw ================================================ name Hawaiian language haw status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/miz/mto ================================================ name Totontepec Mixe language mto maintainer Bill Dengler and Elizabeth Resendiz status testing lowercaseSentence tunes s6 c6 q6 e6 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/myn/quc ================================================ name K'iche' language quc status testing stressRule 3 // stress on final syllable stressAmp 8 8 20 15 0 0 25 25 // reduce unstressed vowels stressLength 120 120 200 150 0 0 250 250 // reduce unstressed vowels ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/poz/id ================================================ name Indonesian language id stressLength 160 200 180 180 0 0 220 240 stressAmp 16 18 18 18 0 0 22 21 consonants 80 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/poz/mi ================================================ name Māori language mi status testing // https://github.com/espeak-ng/espeak-ng/blob/master/docs/voices.md#words words 1 2 // taken from Jacky pitch 115 130 formant 0 150 155 100 formant 1 90 155 70 formant 2 95 70 64 formant 3 15 20 30 formant 4 20 30 40 formant 5 65 20 65 formant 6 70 80 100 formant 7 20 80 100 formant 8 100 95 80 voicing 135 consonants 110 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/poz/ms ================================================ // Last updated: 14 October 2010, Jason Ong (jason@portalgroove.com) name Malay language ms phonemes id stressLength 160 200 180 180 0 0 220 240 stressAmp 16 18 18 18 0 0 22 21 intonation 3 // Less intonation, and comma does not raise the pitch. // Nuance - Peninsula Malaysia // replace 3 a @ // change 'saya' to 'saye' // (only the last phoneme of a word, only in unstressed syllables) consonants 80 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/qu ================================================ name Quechua language qu stressRule 2 // stress on penultimate syllable status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/an ================================================ name Aragonese language an ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/ca ================================================ name Catalan language ca ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/es ================================================ name Spanish (Spain) language es dictrules 1 tunes s6 c6 q6 e6 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/es-419 ================================================ name Spanish (Latin America) language es-419 language es-mx 6 phonemes es-la dictrules 2 intonation 2 stressLength 170 200 230 180 0 0 250 280 tunes s6 c6 q6 e6 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/fr ================================================ name French (France) language fr-fr language fr dictrules 1 tunes s3 c3 q3 e3 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/fr-BE ================================================ name French (Belgium) language fr-be language fr 8 dictrules 2 tunes s3 c3 q3 e3 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/fr-CH ================================================ name French (Switzerland) language fr-ch language fr 8 dictrules 3 tunes s3 c3 q3 e3 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/ht ================================================ name Haitian Creole language ht status testing maintainer // TODO somebody should take responsibility for this phonemes ht dictionary ht ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/it ================================================ name Italian language it maintainer Christian Leo M status mature tunes s4 c4 q4 e4 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/pap ================================================ name Papiamento language pap status testing phonemes base2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/pt ================================================ name Portuguese (Portugal) language pt language pt-pt phonemes pt-pt dictrules 1 intonation 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/pt-BR ================================================ name Portuguese (Brazil) language pt-br language pt 6 dictrules 2 stressLength 200 115 230 230 0 0 250 270 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/roa/ro ================================================ name Romanian language ro ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sai/gn ================================================ name Guarani language gn dictrules 1 words 0 1 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sem/am ================================================ name Amharic language am status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sem/ar ================================================ name Arabic language ar phonemes ar stressRule 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sem/he ================================================ name Hebrew language he status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sem/mt ================================================ name Maltese language mt status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sit/cmn ================================================ name Chinese (Mandarin, latin as English) language cmn language zh-cmn language zh phonemes cmn dictionary cmn words 1 pitch 80 118 dict_min 100000 //for some dialects //[en]: replace ng with n //[zh]: �޺�������ng���n //replace 0 N n //[en]: replace rfx consonants //[zh]: �޾�������r���l��z��er���e //replace 0 ts.h tsh //replace 0 ts. ts //replace 0 s. s //replace 0 i. i[ //replace 0 z. l //replace 0 z. z //replace 0 @r @ //[en]: replace beginning n or l //[zh]: ����nl��n���l��l���n //replace 2 n l //replace 2 l n //[en]: replace beginning w with v //[zh]: w���v //replace 0 w v ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sit/cmn-Latn-pinyin ================================================ name Chinese (Mandarin, latin as Pinyin) language cmn-latn-pinyin language zh-cmn language zh phonemes cmn dictionary cmn words 1 pitch 80 118 dict_min 100000 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sit/hak ================================================ name Hakka Chinese language hak maintainer Chen Chien-ting status testing phonemes hak dictionary hak ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sit/my ================================================ name Myanmar (Burmese) maintainer Min Maung language my ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sit/yue ================================================ name Chinese (Cantonese) language yue language zh-yue language zh 8 phonemes yue dictionary yue // interpret English letters as 1=English words, 2=jyutping dictrules 1 words 1 dict_min 10000 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/sit/yue-Latn-jyutping ================================================ name Chinese (Cantonese, latin as Jyutping) language yue language zh-yue language zh 8 phonemes yue dictionary yue // interpret English letters as 1=English words, 2=jyutping dictrules 2 words 1 dict_min 10000 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/tai/shn ================================================ name Shan (Tai Yai) language shn maintainer ronaldaug status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/tai/th ================================================ name Thai language th status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/az ================================================ name Azerbaijani language az status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/ba ================================================ name Bashkir language ba ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/cv ================================================ name Chuvash language cv status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/kk ================================================ name Kazakh language kk status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/ky ================================================ name Kyrgyz language ky tunes s3 c3 q3 e3 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/nog ================================================ name Nogai language nog status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/tk ================================================ name Turkmen language tk ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/tr ================================================ name Turkish language tr ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/tt ================================================ name Tatar language tt ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/ug ================================================ name Uyghur language ug ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/trk/uz ================================================ name Uzbek language uz status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/urj/et ================================================ name Estonian language et stressAmp 18 16 22 22 20 22 22 22 stressLength 150 180 200 200 0 0 210 250 stressOpt 1 2 4 6 // (S_NO_DIM + S_FINAL_DIM = S_FINAL_DIM_ONLY), S_FINAL_NO_2, S_2_TO_HEAVY stressRule 0 intonation 3 spellingStress ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/urj/fi ================================================ name Finnish language fi stressAmp 18 16 22 22 20 22 22 22 stressLength 150 180 200 200 0 0 210 250 stressOpt 1 2 4 6 // (S_NO_DIM + S_FINAL_DIM = S_FINAL_DIM_ONLY), S_FINAL_NO_2, S_2_TO_HEAVY stressRule 0 intonation 3 spellingStress ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/urj/hu ================================================ name Hungarian language hu brackets 0 bracketsAnnounced 0 pitch 81 117 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/urj/smj ================================================ name Lule Saami language smj status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zle/be ================================================ name Belarusian language be dict_min 2000 speed 95 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zle/ru ================================================ name Russian language ru replace 03 a a# dict_min 20000 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zle/ru-LV ================================================ name Russian (Latvia) language ru-lv 2 maintainer Valdis Vitolins status testing phonemes ru-lv dictrules 2 dict_min 20000 speed 95 words 0 2 tone 150 220 450 255 750 20 3500 255 stressAmp 12 10 8 8 0 0 16 17 stressLength 160 140 200 140 0 0 240 160 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zle/ru-cl ================================================ name Russian (Classic) language ru-cl replace 03 a a# dict_min 20000 speed 95 dictrules 3 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zle/uk ================================================ name Ukrainian language uk maintainer Andrij Mizyk status testing speed 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zls/bg ================================================ name Bulgarian language bg stressAmp 13 12 17 17 20 22 22 21 stressLength 180 170 200 200 200 200 210 220 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zls/bs ================================================ name Bosnian language bs phonemes hr pitch 81 120 formant 0 100 100 100 formant 1 97 97 100 formant 2 97 97 100 formant 3 97 102 100 formant 4 97 102 100 formant 5 97 102 100 stressAdd 10 10 0 0 0 0 -30 -30 dictrules 3 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zls/hr ================================================ name Croatian language hr language hbs // attributes towards !variant3 pitch 81 120 formant 0 100 100 100 formant 1 97 97 100 formant 2 97 97 100 formant 3 97 102 100 formant 4 97 102 100 formant 5 97 102 100 stressAdd 10 10 0 0 0 0 -30 -30 dictrules 1 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zls/mk ================================================ name Macedonian language mk ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zls/sl ================================================ name Slovenian language sl status testing ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zls/sr ================================================ name Serbian language sr // attributes towards !variant3 pitch 80 120 formant 0 100 100 100 formant 1 97 97 100 formant 2 97 97 100 formant 3 97 102 100 formant 4 97 102 100 formant 5 97 102 100 stressAdd 10 10 0 0 0 0 -30 -30 dictrules 2 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zlw/cs ================================================ name Czech language cs ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zlw/pl ================================================ name Polish language pl intonation 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/lang/zlw/sk ================================================ name Slovak language sk ================================================ FILE: app/src/main/assets/espeak-ng-data/phondata-manifest ================================================ # This file lists the type of data that has been compiled into the # phondata file # # The first character of a line indicates the type of data: # S - A SPECT_SEQ structure # W - A wavefile segment # E - An envelope # # Address is the displacement within phondata of this item # # Address Data file # ------- --------- W 0x00008 ustop/null S 0x00158 vowel/@ S 0x0021c vowel/@- S 0x002e0 vowel/a S 0x003e4 vowel/e S 0x004e8 vowel/i S 0x005ec vowel/oo S 0x006f0 vowel/u S 0x007f4 klatt/m-syl S 0x008f8 m/m-syl S 0x009bc klatt/n-syl S 0x00ac0 n/n-syl S 0x00b84 nn/nn-syl W 0x00cc8 ustop/percus10 S 0x00ed4 vowelr/r-voc S 0x01018 vwl_hi/l-voc S 0x0111c r/r@ S 0x011e0 r/ra S 0x012a4 r/re S 0x01368 r/ri S 0x0142c r/ro S 0x014f0 r/ru S 0x015b4 r/xr S 0x01638 r/_r S 0x016fc r/tr S 0x01780 r/r S 0x01844 r3/r_n W 0x018c8 r3/rx S 0x02c20 r/trr S 0x02ce4 r/rr S 0x02da8 r3/r_ S 0x02e2c r3/r_trill2 W 0x02ef0 r3/r_trill2.wav S 0x035fc r3/r_trill W 0x03700 r3/r_trill.wav W 0x0416c r3/r_trill3.wav S 0x045b0 r3/r_uvl W 0x046b4 r3/r_uvl.wav S 0x055bc l/l@ S 0x05680 l/la S 0x05704 l/le S 0x05788 l/li S 0x0584c l/lo S 0x05950 l/lu S 0x05a14 l/L1_@L S 0x05b18 l/L1_aL S 0x05c1c l/L1_eL S 0x05ce0 l/L1_iL S 0x05de4 l/L1_oL S 0x05f28 l/L1_uL S 0x0602c l/l_ S 0x060b0 l/xl S 0x06134 l/_l S 0x061f8 l/tl S 0x0627c l/l_long S 0x06300 l/l S 0x06384 l/L2_eL S 0x06448 l/L2_uL S 0x0654c l/L2_@L S 0x06650 l/L2_aL S 0x06754 l/L2_iL S 0x06858 l/L2_oL S 0x0699c l/l_@ S 0x06a20 l/l_a S 0x06aa4 l/l_e S 0x06b28 l/l_i S 0x06bec l/l_o S 0x06cb0 l/l_u S 0x06d34 l^/j2@ S 0x06df8 l^/j2a S 0x06ebc l^/j2e S 0x06f80 l^/j2i S 0x07044 l^/j2o S 0x07148 l^/j2u S 0x0724c l^/_l^ S 0x07350 l^/l^ S 0x07454 l^/l_rfx S 0x07518 ll/xll S 0x075dc ll/_ll S 0x076e0 ll/ll S 0x077a4 w/w@ S 0x07868 w/wa S 0x0792c w/we S 0x079f0 w/wi S 0x07ab4 w/wo S 0x07b78 w/wu S 0x07c3c w/xw S 0x07cc0 w/w S 0x07d44 w/_w S 0x07e08 w/iw_ S 0x07f0c w/w_ S 0x07fd0 j/j@ S 0x080d4 j/ja S 0x081d8 j/je S 0x082dc j/ji S 0x083a0 j/jo S 0x084e4 j/ju S 0x085a8 j/xj S 0x0862c j/_j S 0x086b0 j/j_ S 0x08774 j2/j2@ S 0x08838 j2/j2a S 0x088fc j2/j2e S 0x089c0 j2/j2i S 0x08a84 j2/j2o S 0x08b88 j2/j2u S 0x08c4c j2/xj2 S 0x08cd0 j2/_j2 S 0x08d54 klatt/m_ S 0x08e58 klatt/m S 0x08f5c m/m@ S 0x09060 m/ma S 0x09164 m/me S 0x09268 m/mi S 0x093ac m/mo S 0x094b0 m/mu S 0x095b4 m/mj S 0x09678 m/_m S 0x096fc m/m_ S 0x097c0 klatt/n S 0x098c4 n/n@ S 0x099c8 n/na S 0x09acc n/ne S 0x09bd0 n/ni S 0x09cd4 n/no S 0x09dd8 n/nu S 0x09edc n/nj S 0x09fa0 n/_n S 0x0a024 n/n_ S 0x0a0e8 klatt/nr S 0x0a1ec n/nr@ S 0x0a2f0 n/nra S 0x0a3f4 n/nre S 0x0a4f8 n/nri S 0x0a5fc n/nro S 0x0a700 n/nru S 0x0a804 n/_nr S 0x0a888 n/nr_ S 0x0a94c klatt/n^@ S 0x0a9d0 klatt/n^ S 0x0aad4 n^/n^@ S 0x0ac58 n^/n^a S 0x0ad9c n^/n^e S 0x0af20 n^/n^i S 0x0b0a4 n^/n^o S 0x0b268 n^/n^u S 0x0b3ec n^/_n^ S 0x0b470 n^/n^_ S 0x0b5b4 klatt/nn_ S 0x0b6b8 klatt/nn S 0x0b7bc nn/nn@ S 0x0b880 nn/nna S 0x0b944 nn/nne S 0x0ba08 nn/nni S 0x0bacc nn/nno S 0x0bb90 nn/nnu S 0x0bc54 nn/inn S 0x0bd18 nn/nnj S 0x0bd9c nn/_nn S 0x0be20 nn/nn_ S 0x0bee4 r3/@tap2 S 0x0c028 r3/@tap S 0x0c16c d/tap1 S 0x0c230 d/tap3 S 0x0c334 d/dr S 0x0c3b8 r3/@tap_rfx_ S 0x0c4fc r3/@tap_rfx S 0x0c640 b/xb S 0x0c704 klatt/b W 0x0c7c8 x/b_ W 0x0cbe0 x/b S 0x0cd44 b/b_ S 0x0ce08 b/b@2 S 0x0cf0c b/b@ S 0x0d010 b/ba S 0x0d114 b/be S 0x0d218 b/bi S 0x0d31c b/bo S 0x0d420 b/bu S 0x0d524 b/b S 0x0d628 d/xd S 0x0d6ec d/d_ W 0x0d7b0 x/d_ S 0x0dbd8 d/d W 0x0dc9c x/d W 0x0deb8 x/d_dnt S 0x0e19c dzh/xdzh S 0x0e260 dzh/dzh_ W 0x0e324 x/dzh_ S 0x0ed5c dzh/dzh W 0x0ee20 x/dzh W 0x0f22c x/dz_pzd S 0x0f68c dzh/xdz_pzd S 0x0f750 klatt/dz_pzd_ S 0x0f814 klatt/dz_pzd S 0x0f8d8 dzh/dz_pzd_ S 0x0f99c dzh/dz_pzd S 0x0fa60 g/xg S 0x0fb24 g/g_ W 0x0fbe8 x/g_ S 0x0ffa8 g/g W 0x1006c x/g2 S 0x102f4 klatt/v_ W 0x103b8 vocw/v S 0x10cb8 klatt/bh S 0x10d7c voc/v_ S 0x10e40 voc/bh S 0x10f04 klatt/v S 0x10fc8 voc/v S 0x110cc voc/v#_ S 0x11190 voc/v# S 0x11294 voc/dh_ W 0x11358 vocw/dh S 0x11c60 voc/dh S 0x11d24 voc/z_ W 0x11de8 ufric/s_ S 0x1289c voc/z S 0x12960 klatt/zh_ W 0x12a24 vocw/zh S 0x1338c klatt/zh S 0x13450 voc/zh_ S 0x13514 voc/zh W 0x135d8 vocw/zh_rfx S 0x13e68 voc/z_pzd_ W 0x13f2c ufric/s_pzd_ S 0x14a30 voc/z_pzd W 0x14af4 ufric/s_pzd W 0x1542c ufric/sh_pzd_ W 0x15ef4 ufric/sh_pzd S 0x16828 voc/j W 0x1692c ufric/ch S 0x17044 klatt/qqh_ W 0x17108 vocw/Q_ S 0x17914 klatt/qqh W 0x179d8 vocw/Q S 0x181e4 voc/Q_ S 0x182a8 voc/Q S 0x1836c voc/Q_ulv W 0x18470 ufric/xx W 0x18f6c ustop/p_ W 0x1977c ustop/pr W 0x19bc4 ustop/p_unasp W 0x19ef0 ustop/pl W 0x1a2e8 ustop/p W 0x1a658 ustop/t_ W 0x1ab18 ustop/tr W 0x1b278 ustop/t_dnt W 0x1b688 ustop/t W 0x1babc ustop/t_hi W 0x1bd88 ustop/tsh_ W 0x1c6c8 ustop/tsh W 0x1cd08 ustop/ts_pzd W 0x1d40c ustop/t_pzd W 0x1d858 ustop/c W 0x1db08 ustop/k_ W 0x1dfc4 ustop/kr W 0x1e604 ustop/ki W 0x1ebcc ustop/kl W 0x1f1fc ustop/k_unasp W 0x1f6d0 ustop/k W 0x1fba4 ustop/q W 0x1fd10 ustop/q_u W 0x1fe30 ufric/f_ W 0x20900 ufric/f W 0x210f0 ufric/th_ W 0x21970 ufric/th W 0x22208 ufric/s! W 0x22ab8 ufric/s W 0x23258 ufric/sh_ W 0x23d08 ufric/sh W 0x246b8 ufric/sh_rfx W 0x25054 ufric/l# W 0x25a98 ufric/ch_ W 0x263c0 ufric/x_ W 0x26f1c ufric/x_hr W 0x27830 h/h@ W 0x27d84 h/ha W 0x28400 h/he W 0x28a94 h/hi W 0x2902c h/ho W 0x296e8 h/hu W 0x29e0c h/h_ W 0x2a4b8 ustop/ts_ W 0x2ae18 ustop/ts S 0x2b874 d/xdz W 0x2b938 ustop/p_unasp_ W 0x2ba74 ustop/p_asp W 0x2bf78 ustop/t_short W 0x2c1bc ustop/ts_pzd_ W 0x2c680 ustop/ts_pzd2 W 0x2c9b4 ustop/k_asp W 0x2d0b8 ustop/k_asp_e W 0x2d820 ustop/k_asp_a W 0x2e0a4 ufric/s_continue S 0x2e854 vowel/a# S 0x2e958 vowel/a_2 S 0x2ea5c vowel/ee_1 S 0x2eba0 vowel/o S 0x2ece4 vowel/oo_4 S 0x2ede8 vowel/u_bck S 0x2eeec vowel/uu_2 S 0x2eff0 vowel/y S 0x2f134 vowel/y# S 0x2f238 vdiph/au_4 S 0x2f3bc vdiph/eu S 0x2f500 vdiph2/iu S 0x2f684 vdiph/ai S 0x2f7c8 vdiph/ei S 0x2f90c vdiph/eei S 0x2fa90 vdiph/oi S 0x2fc54 vdiph/ui S 0x2fd98 w/w2 W 0x2fe5c ustop/t_dnt2 S 0x300b4 vowel/ii_5 S 0x301b8 vowel/e_mid2 S 0x302bc vowel/ii#_2 S 0x303c0 vdiph/ai_5 S 0x30504 vowel/a_6 S 0x30608 vdiph/@i_2 S 0x3074c vowel/@_3 S 0x30810 vowel/o-_4 S 0x30914 vowel/u_2 W 0x30a18 ustop/tsh_unasp W 0x30ed8 ustop/k_ejc W 0x31688 vwl_ar/hah W 0x325ec vwl_ar/dhad W 0x3364c vwl_ar/shin S 0x34428 vowel/aa_7 S 0x3452c vowel/u_7 S 0x34630 vowel/ii# S 0x34734 vowel/oe S 0x34838 vowel/o_mid S 0x3493c vowel/@_2 S 0x34a40 vowel/ee S 0x34b44 vowel/aa_8 S 0x34c48 vowel/0_3 S 0x34d4c vowel/e_6 S 0x34e50 vowel/ii E 0x34f54 envelope/i_risefall E 0x34fd4 envelope/p_fall E 0x35054 envelope/p_214 E 0x350d4 envelope/p_rise E 0x35154 envelope/p_level S 0x351d4 n/n_long_ S 0x35298 nn/nn2_ W 0x3535c ustop/t_unasp2 W 0x35468 ustop/k_unasp_ W 0x35724 ustop/tsh_pzd_unasp W 0x35f74 ustop/tsh_pzd W 0x36ab4 ufric/sh_pzd2 W 0x37604 ustop/ts_unasp W 0x37e7c ustop/ts_rfx_unasp W 0x38a68 ustop/ts_rfx S 0x39748 vwl_zh/a_n S 0x3984c vowel/aa_2 S 0x399d0 vowel/a_3 S 0x39ad4 vdiph/ai_6 S 0x39c98 vwl_zh/aau S 0x39ddc vowel/@_bck S 0x39ee0 vowel/3_2 S 0x3a024 vowelr/V3_r S 0x3a168 vowel/ee_2 S 0x3a26c vdiph2/ei_4 S 0x3a3b0 vowel/ii_2 S 0x3a4b4 vowel/i#_7 S 0x3a5b8 vowel/i#_6 S 0x3a6bc vwl_zh/iaa S 0x3a800 vwl_zh/iaau S 0x3a984 vwl_zh/ie S 0x3aac8 vdiph2/iioo S 0x3ac0c vwl_zh/iou S 0x3ad90 vnasal/oo_n2 S 0x3aed4 vdiph2/o_oo S 0x3b018 vowel/8 S 0x3b11c vdiph/8u S 0x3b260 vwl_zh/ong S 0x3b3e4 vnasal/u_n S 0x3b4e8 vwl_zh/uaa S 0x3b62c vdiph2/oa S 0x3b770 vwl_zh/uai S 0x3b8f4 vdiph2/o@ S 0x3ba78 vwl_zh/uei S 0x3bbfc vwl_zh/uo S 0x3bd80 vowel/uu_3 S 0x3be44 vowel/y_2 S 0x3bf88 vdiph2/yu S 0x3c10c vwl_zh/y& S 0x3c250 vwl_zh/yee S 0x3c394 vdiph2/y@ S 0x3c4d8 vdiph/yi S 0x3c61c vowel/ii_3 S 0x3c720 vowel/oo_2 S 0x3c824 vowel/i# S 0x3c928 vowel/o_2 S 0x3ca6c vdiph/aai_2 S 0x3cc30 vdiph/ai_2 S 0x3cdf4 vdiph2/iu_4 S 0x3cf38 vdiph/ooi S 0x3d0fc vdiph/ui_3 S 0x3d280 vowel/a#_3 S 0x3d384 r/a_ S 0x3d448 vowel/i_4 S 0x3d54c vowel/& S 0x3d650 vowel/a_8 S 0x3d754 vowel/o_5 S 0x3d858 vowel/V_4 S 0x3d95c vowel/yy S 0x3da60 vowel/V S 0x3db64 r/aa S 0x3dc68 r2/r2@ S 0x3dd2c r2/r2a S 0x3ddf0 r2/r2e S 0x3def4 r2/r2i S 0x3dfb8 r2/r2o S 0x3e07c r2/r2u S 0x3e140 vowel/@_6 S 0x3e244 vwl_en/@L S 0x3e308 vowel/ee_5 S 0x3e40c vowel/ii#_3 S 0x3e510 vowel/ii_4 S 0x3e614 vowel/ii_7 S 0x3e718 vowel/0 S 0x3e81c vowel/V_2 S 0x3e920 vowel/8_2 S 0x3ea24 vowel/uu S 0x3eb28 vowel/3_en S 0x3ec6c w/wi2 S 0x3ed70 vowel/i_en S 0x3eeb4 vowel/oo_en S 0x3eff8 vwl_en/u_L S 0x3f13c vdiph2/uw_2 S 0x3f280 vdiph/au S 0x3f404 vdiph/@u_en S 0x3f588 vdiph2/ii@ S 0x3f70c vdiph2/8@ S 0x3f850 vdiph2/uu@ S 0x3f9d4 vwl_en/aI@ S 0x3fb98 vwl_en/aU@ S 0x3fd1c vowelr/V_r S 0x3fe60 vnasal/aa_n2 S 0x3ffa4 vowel/oo_1 S 0x400e8 vdiph/eei_2 S 0x4022c vdiph/ooi_2 S 0x403f0 vowel/aa_9 S 0x404f4 vowel/aa S 0x405f8 vowel/e# S 0x406fc vowel/e_7 S 0x40800 vowel/ee#_2 S 0x40904 vowel/i_8 S 0x40a08 vowel/i_7 S 0x40b0c vowel/u_bck2 S 0x40c10 vowel/u_bck3 S 0x40d14 vowel/u_5 S 0x40e18 vowel/8_7 S 0x40f1c vowel/8_4 S 0x41020 vdiph/&i S 0x41164 vdiph/@i W 0x412a8 ufric/s_pal S 0x41b5c d/xd_pzd W 0x41c20 x/d_pzd S 0x42034 vdiph/ou_2 S 0x42178 vowel/aa# S 0x4227c vowel/uu_4 S 0x42380 vdiph/aai_3 S 0x42504 vdiph/y#i S 0x42648 vdiph/ui_4 S 0x4278c vdiph/aau S 0x42910 vdiph/ou S 0x42a54 vdiph/eu_2 S 0x42b98 vdiph2/iu_2 S 0x42d1c vdiph/&y S 0x42e60 vdiph/eey S 0x42fa4 vdiph/y#y S 0x430e8 vdiph2/iy S 0x4322c vdiph2/uo S 0x43370 vdiph2/ie S 0x434b4 vdiph2/y-y# S 0x435f8 r3/r_trill_short W 0x436fc h/hu_fi S 0x43fec vowel/@_4 S 0x440b0 vowel/ee_4 S 0x441b4 vowel/u#_2 S 0x442b8 vowel/oe_2 S 0x443bc vwl_fr/y2r S 0x44440 vwl_fr/e_2r S 0x444c4 vwl_fr/aa2r S 0x44548 vwl_fr/ee2r S 0x4460c vwl_fr/oo2r S 0x446d0 vwl_fr/@2r S 0x44754 vwl_fr/a2r S 0x447d8 vwl_fr/e2r S 0x4485c vwl_fr/i2r S 0x448e0 vwl_fr/o2r S 0x44964 vwl_fr/u2r S 0x449e8 vwl_fr/re2 S 0x44a6c vwl_fr/r@2 S 0x44af0 vwl_fr/raa S 0x44b74 vwl_fr/ree S 0x44bf8 vwl_fr/ry S 0x44c7c vwl_fr/rw S 0x44d00 vwl_fr/roo S 0x44d84 vwl_fr/rj S 0x44e08 vwl_fr/r@ S 0x44e8c vwl_fr/ra S 0x44f10 vwl_fr/re S 0x44f94 vwl_fr/ri S 0x45018 vwl_fr/ro S 0x4509c vwl_fr/ru S 0x45120 vwl_fr/r S 0x451a4 vwl_fr/trr S 0x45268 vwl_fr/rr S 0x452ec vwl_fr/r_@ S 0x45370 vwl_fr/r_a S 0x453f4 vwl_fr/r_e S 0x45478 vwl_fr/r_i S 0x454fc vwl_fr/r_o S 0x45580 vwl_fr/r_u S 0x45604 vwl_fr/r_y S 0x45688 vwl_fr/r_n S 0x4574c vwl_fr/r_ S 0x457d0 vwl_fr/tr S 0x458d4 vwl_fr/br S 0x459d8 vwl_fr/lo S 0x45a5c l/l_y S 0x45ae0 vowel/@_hgh S 0x45ba4 vowel/a_7 S 0x45ca8 vowel/e_8 S 0x45dac vowel/e_mid S 0x45eb0 vwl_fr/j S 0x45fb4 vowel/o_8 S 0x460f8 vowel/o_mid2 S 0x461fc vwl_fr/wa S 0x462c0 vnasal/aa_n4 S 0x46404 vnasal/W_n S 0x46548 vnasal/o_n5 S 0x4668c b/xbr S 0x46750 b/br S 0x467d4 d/xdr S 0x46898 g/xgr S 0x4695c g/gr W 0x46a20 x/g W 0x46ce0 ustop/t_short_ S 0x46f6c vwl_af/r@ S 0x47030 vwl_af/@ S 0x470f4 vowel/a_4 S 0x471f8 vdiph/@u_3 S 0x4737c vdiph2/i@ S 0x47540 vdiph2/u@ S 0x476c4 vnasal/a#_n2 S 0x477c8 vnasal/a_n S 0x4790c vnasal/e_n S 0x47a10 vnasal/i_n S 0x47b14 vnasal/o_n S 0x47c58 vowel/yy_4 S 0x47d5c vowel/o- S 0x47e60 vwl_lv/a S 0x47f64 vwl_lv/aa S 0x48028 vwl_lv/e S 0x480ec vwl_lv/ee S 0x481b0 vwl_lv/i S 0x48274 vwl_lv/ii S 0x48338 vwl_lv/o S 0x483fc vwl_lv/oo S 0x484c0 vwl_lv/u S 0x48584 vwl_lv/uu S 0x48648 vdiph/aai S 0x487cc vdiph2/ie_2 S 0x48910 vdiph2/ua S 0x48a14 vowel/@_low S 0x48ad8 vowel/V_3 S 0x48bdc vowel/i_fnt S 0x48ce0 vowel/ii_6 S 0x48da4 vowel/e_2 S 0x48ea8 vdiph/ee-e S 0x48fec vowel/a_5 S 0x490f0 vowel/uu_bck S 0x491f4 vnasal/i_n2 S 0x492f8 vnasal/ii_n S 0x493fc vnasal/ee_n2 S 0x49540 vnasal/V_n S 0x49644 vdiph/aau_3 S 0x497c8 d/xd3 W 0x4988c ustop/th_rfx2 S 0x49e90 g2/xg W 0x49f54 ustop/percus02 W 0x4a284 ustop/ts2 S 0x4a754 vowel/y#_2 S 0x4a858 vowel/e_3 S 0x4a95c vowel/e_e S 0x4aa60 vowel/a#_2 S 0x4ab64 vowel/oo_5 S 0x4ac68 vowel/y## S 0x4ad6c vowel/y#_3 S 0x4ae70 vdiph/ai_7 S 0x4aff4 vdiph/ou_3 S 0x4b0f8 vdiph/y#i_2 S 0x4b23c m/m#_ S 0x4b340 n/n#_ S 0x4b444 n^/n^#_ S 0x4b548 nn/nn#_ W 0x4b64c ufric/tl# S 0x4bfb4 r3/r#_ S 0x4c038 vowel/oo_3 W 0x4c0fc ustop/k_asp_u W 0x4c92c ufric/x2 S 0x4d284 vowel/aa_6 S 0x4d3c8 vowel/u#_7 S 0x4d4cc vowel/V_6 W 0x4d5d0 ustop/t_unasp W 0x4d708 ustop/ts_pzd3 S 0x4dd88 vowel/i_2 S 0x4de8c vdiph/aau_2 S 0x4dfd0 vdiph/ae S 0x4e114 vdiph/eeu_2 S 0x4e258 vdiph/ae_2 S 0x4e3dc vdiph/eei_5 S 0x4e520 vwl_ru/ee S 0x4e664 vdiph2/ea S 0x4e7a8 vowel/i_3 S 0x4e8ac vowel/i_6 S 0x4e9b0 vdiph2/uaa S 0x4eb34 vdiph/eei_3 S 0x4ec78 vwl_lv/e2 S 0x4ed3c vwl_lv/ee2 S 0x4ee00 vwl_lv/y S 0x4ef04 vwl_lv/yy S 0x4f008 vwl_lv/ai S 0x4f18c vwl_lv/au S 0x4f310 vwl_lv/ei S 0x4f454 vwl_lv/ie S 0x4f598 vwl_lv/iu S 0x4f71c vwl_lv/ui S 0x4f860 vwl_lv/ua S 0x4f964 vwl_lv/oi W 0x4fb28 h/h-lv S 0x504a8 l^/l^_ W 0x505ac myanmar/k W 0x5149c myanmar/kh W 0x520b4 myanmar/g.wav S 0x52ef8 myanmar/ny W 0x530bc myanmar/s W 0x54258 myanmar/hs W 0x553f4 myanmar/z W 0x564dc myanmar/t_short W 0x5662c myanmar/ht W 0x571b4 myanmar/d W 0x57d28 myanmar/p W 0x58c54 myanmar/t_hi W 0x58f20 myanmar/h S 0x5a228 myanmar/yy S 0x5a42c myanmar/a S 0x5a4b0 myanmar/ky W 0x5a6f4 myanmar/by.wav W 0x5ac00 myanmar/ch.wav W 0x5b454 myanmar/gya.wav W 0x5c7d8 myanmar/htya.wav W 0x5db1c myanmar/phya.wav W 0x5e7d4 myanmar/pya.wav W 0x5fc58 myanmar/ty.wav W 0x60f18 myanmar/sh.wav S 0x61b2c myanmar/a01 S 0x61c30 myanmar/a02 S 0x61db4 myanmar/a03 S 0x62038 myanmar/a04 S 0x620fc myanmar/a05 S 0x62200 myanmar/a06 S 0x62584 myanmar/a07 S 0x626c8 myanmar/a08 S 0x6284c myanmar/a09 S 0x62b50 myanmar/a11 S 0x62cd4 myanmar/a12 S 0x62f98 myanmar/a14 S 0x6315c myanmar/a13 S 0x633e0 myanmar/a17 S 0x636a4 myanmar/a16 S 0x639a8 myanmar/a20 S 0x63b2c myanmar/a19 S 0x63d70 myanmar/a21 S 0x64034 myanmar/a23 S 0x64138 myanmar/a22 S 0x642bc myanmar/a24 S 0x64600 myanmar/a29 S 0x64744 myanmar/a28 S 0x64988 myanmar/a30 S 0x64d0c myanmar/a32 S 0x64f50 myanmar/a31 S 0x65214 myanmar/a33 S 0x65318 myanmar/a35 S 0x655dc myanmar/a34 S 0x658a0 myanmar/a36 S 0x65ba4 myanmar/a43 S 0x65de8 myanmar/a42 S 0x6602c myanmar/a44 S 0x66430 myanmar/a49 S 0x665b4 myanmar/a50 S 0x66838 myanmar/a46 S 0x66a3c myanmar/a45 S 0x66c40 myanmar/a47 S 0x66f44 myanmar/a25 S 0x67088 myanmar/a26 S 0x672cc myanmar/a27 S 0x67490 myanmar/a37 S 0x67654 myanmar/a38 S 0x67798 myanmar/a39 S 0x679dc myanmar/a40 S 0x67b60 myanmar/a41 S 0x67ce4 vowel/y_4 S 0x67de8 vwl_no/y# S 0x67eec vwl_no/& S 0x67ff0 vwl_no/u# S 0x680f4 vwl_no/u#2 S 0x68238 vdiph/0i_2 S 0x683bc vdiph/ai_3 S 0x68500 vwl_no/y#y S 0x68644 vwl_no/au- S 0x68808 vowel/ee# S 0x6890c vnasal/ee_u_n S 0x68a90 vnasal/oo_n3 S 0x68c14 vowel/aa_3 W 0x68d18 vocw/Q2 W 0x695e4 ustop/tsh_asp W 0x6a24c x/g3 S 0x6a434 vwl_ro/mi S 0x6a578 vwl_ru/ii- S 0x6a63c vwl_ru/ii S 0x6a740 vwl_ru/ii# S 0x6a804 vwl_ru/i# S 0x6a908 vwl_ru/e S 0x6aa0c vwl_ru/E# S 0x6ab10 vwl_ru/E@ S 0x6ac14 vwl_ru/o S 0x6ad18 vwl_ru/oo S 0x6addc vwl_ru/u S 0x6aee0 vwl_ru/u# S 0x6b024 vwl_ru/u#u S 0x6b168 vwl_ru/8 S 0x6b22c vwl_ru/ju S 0x6b330 vwl_ru/ja S 0x6b4b4 vwl_ru/a S 0x6b5b8 vwl_ru/aa S 0x6b6bc r3/r_ru2 W 0x6b7c0 r3/r_ru S 0x6bac4 vwl_it/o_open S 0x6bbc8 vdiph/eeu S 0x6bd0c vdiph/au_2 S 0x6be90 vdiph/ooi_3 S 0x6c014 vdiph/aau_4 S 0x6c198 vowel/8_6 S 0x6c29c vdiph/ooi_4 S 0x6c3e0 vdiph2/ye S 0x6c524 l/l_front_ S 0x6c668 l/l_front S 0x6c76c l/l_4 S 0x6c830 vowel/ee_6 S 0x6c8f4 vowel/y_5 S 0x6ca38 vowel/yy_3 S 0x6cb3c vowel/oe_4 S 0x6cc00 vowel/aa_4 W 0x6cd04 ufric/sx_sv S 0x6d54c vowel/o_4 W 0x6d650 ustop/t_hard W 0x6d890 ufric/sh3 S 0x6e224 vwl_tn/r@ S 0x6e2e8 vwl_tn/@ S 0x6e3ac vwl_tn/I S 0x6e470 vdiph/i@_2 S 0x6e5f4 vowel/0_2 W 0x6e6f8 ufric/tlh E 0x6fc14 envelope/p_fallrise E 0x6fc94 envelope/vi_5amp E 0x6fd14 envelope/p_512 E 0x6fd94 envelope/vi_6amp S 0x6fe14 vietnam/a_2 S 0x6ff58 vietnam/aa S 0x7005c vietnam/e_e_2 S 0x70160 vietnam/e S 0x70264 vietnam/e_short_1 S 0x703e8 vietnam/i S 0x704ec vietnam/i_2 S 0x705f0 vietnam/oo S 0x70734 vietnam/o_2 S 0x70878 vietnam/u S 0x7097c vietnam/y_2 S 0x70a80 vietnam/V_2 S 0x70b84 vietnam/@_2 S 0x70c88 vdiph/&i_2 S 0x70dcc vdiph/u-i S 0x70f10 vdiph/@u S 0x71054 vdiph2/ii@_3 S 0x711d8 vietnam/y@ S 0x7131c vietnam/u@ S 0x714a0 vietnam/o# S 0x715e4 vietnam/O_short_2 S 0x71728 vietnam/oe S 0x7186c vietnam/ie S 0x719b0 vnasal/oi_n S 0x71b74 vdiph/@i_3 S 0x71cb8 vowel/u_3 W 0x71dbc vietnam/c_2 W 0x722f8 vietnam/c S 0x72834 n/nm S 0x728f8 l/l_vi W 0x729fc vietnam/th W 0x72fec vietnam/tr W 0x732dc vietnam/dda_2 W 0x737a8 vietnam/ch W 0x73d04 vietnam/w S 0x73f5c vietnam/_w S 0x74020 vietnam/w_ S 0x740e4 vietnam/n^_ W 0x74228 vietnam/hi W 0x74594 vietnam/hu S 0x74c18 vwl_zh/ang S 0x74e1c vwl_zh/aang S 0x75060 vwl_zh/eng S 0x75264 vwl_zh/ing S 0x754a8 vwl_zh/ng S 0x755ec vwl_zh/oeng S 0x757b0 vwl_zh/ung S 0x75934 vowel/8_3 S 0x75a38 vdiph/y#y_2 W 0x75bbc ustop/tsh_sr E 0x764d4 envelope/chr_fall21 E 0x76554 envelope/chr_level2 E 0x765d4 envelope/chr_rise23 E 0x76654 envelope/chr_fall32 E 0x766d4 envelope/chr_level3 E 0x76754 envelope/chr_rise4 E 0x767d4 envelope/chr_fall43 S 0x76854 vnasal/a#_n W 0x76958 x/dz_pzd_ S 0x77048 vwl_es/oo_ S 0x7710c vwl_es/ooi_ S 0x77290 vwl_es/ooi S 0x77414 voc/v2 W 0x774d8 ufric/z_eu W 0x77ee0 ufric/ts_eu W 0x78888 ufric/tz_eu S 0x792f4 vdiph/0i S 0x794b8 vdiph/oou S 0x795fc vwl_it/a S 0x79700 vwl_it/e_open S 0x79804 vwl_it/i S 0x79908 vwl_it/o S 0x79a4c vwl_it/u S 0x79b50 vowel/8_5 S 0x79c54 vowel/o_7 S 0x79d58 vdiph/eeu_3 S 0x79e9c vnasal/a#u_n S 0x79fe0 vowel/ee_3 S 0x7a0a4 d/x_tap S 0x7a168 d/tap2 S 0x7a22c vwl_ro/li S 0x7a330 vwl_ro/ni S 0x7a434 vwl_ro/ii- S 0x7a4f8 vowel/i#_5 S 0x7a5fc vdiph/ii S 0x7a7c0 vdiph/i#i S 0x7a904 vdiph2/uw_3 S 0x7aa48 vdiph2/eo S 0x7abcc vdiph2/e_u S 0x7ad10 d/tap_i S 0x7add4 d/tap S 0x7ae98 vowel/u# S 0x7af9c vowel/@_fr S 0x7b060 vowel/o-_2 S 0x7b164 vowel/aa_5 S 0x7b2a8 vwl_en_n/O@ S 0x7b3ac vdiph2/uw_4 S 0x7b4f0 vdiph2/ee@ S 0x7b634 vowel/ii_final S 0x7b738 vowel/o-_3 S 0x7b83c vwl_en_rp/aa S 0x7b980 vowel/3_3 S 0x7bac4 vowel/uu#_2 S 0x7bbc8 vdiph/au_3 S 0x7bd4c vdiph/@u_2 S 0x7be90 vdiph2/ei_2 S 0x7bfd4 vdiph2/ee@_2 S 0x7c118 vwl_en_rp/i@ S 0x7c29c vwl_en_rp/aU@ S 0x7c420 vowel/e_5 S 0x7c524 vowel/u#_4 S 0x7c628 vowelr/aa_r S 0x7c7ec vowelr/e_r S 0x7c970 vowel/i_5 S 0x7ca74 vwl_en_us/or S 0x7cbb8 vowelr/oo_r S 0x7ccbc vdiph/au# S 0x7ce00 vowel/o_3 S 0x7cf44 vwl_en/aI@_2 S 0x7d0c8 vdiph2/e@ S 0x7d20c vowelr/i_r S 0x7d350 vdiph2/u#@ S 0x7d494 vwl_en/@L_2 S 0x7d598 vwl_en_us/3_us S 0x7d69c vowel/@_low2 S 0x7d760 vwl_en_us/ar S 0x7d8a4 vwl_en_us/a S 0x7d9a8 vwl_en_us/ee S 0x7daac vwl_en_us/aar S 0x7dc30 vwl_en_us/3_us2 S 0x7dd74 vwl_en_us/oor S 0x7def8 vdiph2/uw_6 S 0x7e03c vdiph/aoo S 0x7e180 vwl_en_us/ai S 0x7e304 vwl_en_us/er S 0x7e488 vwl_en_us/ir S 0x7e60c vwl_en_us/ur S 0x7e750 vwl_en_us/ai@ S 0x7e8d4 vwl_en_us/ai3 S 0x7ead8 vwl_en_us/aU@ S 0x7ec9c klatt/x_tap S 0x7ed60 klatt/tap2 S 0x7ee24 vwl_en_us_nyc/a_raised S 0x7ef28 vwl_en_us_nyc/a S 0x7f02c vwl_en_us_nyc/0_3 S 0x7f130 vwl_en_us_nyc/aa_8 S 0x7f234 vwl_en_us_nyc/@i S 0x7f3f8 vowel/@_fnt S 0x7f4fc vdiph2/ei_3 S 0x7f640 vdiph/Vu_2 S 0x7f7c4 vdiph2/i@_2 S 0x7f948 vwl_en/ooi@ S 0x7fb0c vwl_af/I S 0x7fbd0 l/L_eL_af S 0x7fc94 vowel/y_3 S 0x7fd98 vdiph2/iu_3 S 0x7ff5c vdiph/Vu S 0x800e0 vdiph/ai_4 S 0x80264 vdiph/oi_2 S 0x80428 vdiph/ui_2 S 0x805ac vdiph2/y#@ S 0x806f0 vnasal/aa_n3 S 0x80834 vnasal/o_n2 S 0x80978 vdiph/aau_6 S 0x80afc vwl_de/y# S 0x80c00 l/l_3 S 0x80c84 j/_j_short S 0x80d08 vdiph2/i@_3 S 0x80e8c vwl_de/uu_@ S 0x80fd0 vdiph2/ii@_2 S 0x81154 vowel/ii_8 S 0x81258 vowel/y#_4 S 0x8135c vowel/o_6 S 0x81460 vowel/a#_4 S 0x81564 vdiph/y#y_3 S 0x81668 vdiph/ou_4 S 0x817ac voc/Q_less S 0x81870 vnasal/&_n W 0x81974 ustop/ki_ejc S 0x81d80 vdiph/Vi S 0x81f04 vowel/u_6 S 0x82008 vowel/u#_3 S 0x8210c vdiph/ai_8 S 0x82290 voc/murmur1 S 0x823d4 vdiph/@i_4 S 0x82558 vnasal/ai_n S 0x8269c vdiph/a#u S 0x82820 vnasal/au_n S 0x82964 d/dr2 S 0x82a28 vowel/&_2 W 0x82b2c ustop/tsh_unasp2 W 0x82f74 r3/rz_cs S 0x83a20 voc/zh_2 W 0x83ae4 ustop/tsh2 S 0x841f0 dzh/dzh2 W 0x842b4 ustop/t_sr S 0x845ec d/d_dnt W 0x846b0 ufric/ch_sr W 0x85290 ufric/x_sr W 0x85b10 ustop/ts_sr S 0x862cc vowel/&_3 S 0x863d0 vwl_fr/@R S 0x864d4 vietnam/a ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Alex ================================================ language variant name Alex voicing 70 pitch 105 115 flutter 0 formant 1 110 115 100 formant 2 100 110 100 formant 3 100 80 75 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Alicia ================================================ language variant name Alicia gender female pitch 180 275 echo 40 50 formant 0 115 115 110 formant 1 130 160 120 formant 2 150 110 150 formant 3 135 150 100 formant 4 120 120 120 formant 5 120 120 120 formant 6 100 110 105 formant 7 100 110 160 formant 8 200 120 100 intonation 2 voicing 38 consonants 100 20 roughness 1 stressAdd 1 64 64 50 50 100 100 200 stressAmp 12 12 20 20 12 12 20 20 breathw 150 150 200 200 400 400 600 600 breath 0 4 5 2 3 13 3 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Andrea ================================================ language variant name Andrea gender female pitch 200 265 roughness 0 formant 0 100 100 100 formant 1 110 100 80 formant 2 110 80 80 formant 3 115 110 80 formant 4 115 80 100 formant 5 95 50 100 formant 6 0 0 0 formant 7 120 100 100 formant 8 110 100 100 intonation 3 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 voicing 150 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Andy ================================================ language variant name Andy gender Male pitch 85 110 flutter 0 formant 0 80 80 80 80 formant 1 100 100 100 120 formant 2 100 88 100 formant 3 0 0 0 formant 4 80 80 80 formant 5 80 80 80 formant 6 0 0 0 formant 7 0 0 0 formant 8 0 0 0 stressAdd 0 0 0 0 0 0 0 200 stressAmp 35 35 35 35 35 35 35 35 35 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Annie ================================================ language variant name Annie gender female pitch 120 280 formant 0 105 125 120 formant 1 120 140 120 formant 2 120 150 140 formant 3 130 150 130 formant 4 120 120 110 formant 5 120 120 110 formant 6 120 140 130 formant 7 120 140 130 formant 8 120 140 130 intonation 1 voicing 30 consonants 110 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/AnxiousAndy ================================================ language variant name anxiousAndy gender Male pitch 115 110 flutter 0 formant 0 80 80 80 80 formant 1 100 100 100 120 formant 2 100 100 100 formant 3 0 0 0 formant 4 0 0 0 formant 5 100 100 100 formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 stressAdd 100 100 100 100 100 100 100 300 stressAmp 35 35 35 35 35 35 35 35 35 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Demonic ================================================ ##Ten en cuenta que los 2 signos de número en este archivo tienen explicaciones de las comfiguraciones que puede aplicar y cómo comfigurarlas ## Language Establece el idioma de la voz. Esta opción es necesaria para cualquier comfiguración que realices ##La siguiente línea es una configuración que puede cambiar. Sin embargo, si no conoce los códigos de idioma, puede ser mejor dejar la configuración tal y como está. language variant ## La configuración de nombre es el nombre que aparecerá en la configuración de voz en el cuadro combinado de variante. ##La siguiente línea es una opción que puede cambiar name Demonic ##La siguiente línea establece el género de la voz. Male or Female (hombre o mujer) ##La siguiente línea es una opción que puede cambiar gender male flutter 5 stressAmp 20 18 20 20 20 22 22 22 ##Las opciones de formantes ## Formant 0 es usado para dar una baja frecuencia a los sonnidos ## Los tres números son frecuencia, fuerza y ancho, en orden. Ten en cuenta que los números están separados por espacios ##La siguiente línea es una opción que puede cambiar formant 0 100 100 100 # Formant 1, 2, y 3 son las 3 formantes estándar para definir las vocales. ##Las siguientes 3 líneas son opciones que puedes cambiar formant 1 70 100 100 formant 2 80 100 90 formant 3 80 160 90 # Formants 4 y 5 afectan a f3. Esto afectará la calidad de la voz. ##Las siguientes 2 líneas son comfiguraciones que puede cambiar. formant 4 80 85 formant 5 100 100 80 ## Formantes 6, 7 y 8 son opciones que te ofrecen un sonido más claro de las vocales ##Las siguientes 3 líneas son opciones que puedes cambiar formant 6 80 80 100 formant 7 130 130 110 formant 8 120 120 150 ##Intonation afecta el ascenso y la caída de la voz ## Las opciones son: 1 predeterminado, 2 entonación media, 3 entonación media y no afecta a las comas, 4 al final de la oración o punto aumenta el tono de la voz. ##La siguiente línea es una opción que puedes cambiar. intonation 10 # Establecer el rango de tono. El primer número le da un tono base a la voz (valor en hz). El segundo número controla el rango de tonos usado por la voz. Poniéndolo igual # si los 2 números son iguales, la voz será monótona. Por defecto los ajustes son 82 y 118 pitch 43 120 ## La configuración del tono. El primer número en la línea de configuración, 600, es la configuración de frecuencia para la cantidad de graves en la voz. ## El segundo número en la línea de tono es el volumen de la frecuencia de graves. Puede configurarlo de 0 a 255, siendo 0 la menor cantidad, 255 la mayor. ##El tercer número en la línea de tono, 1200, es la frecuencia de rango medio. El cuarto número en la línea es la configuración para cambiar el volumen de la frecuencia de rango medio. ##0 es la menor cantidad y 255 es la mayor. ## El quinto número en la línea de tono, 2000, es la frecuencia de agudos. El sexto número es el volumen de la frecuencia de agudos. 0 es el mínimo y 255 es el máximo. ## Notará que las 3 frecuencias están configuradas en 255. ###La siguiente línea es una opción que puedes cambiar. tone 100 255 1200 255 1500 255 echo 8 10000 roughness 3 breath 20 5 2 10 5 0 27 100 breathw 255 255 60 180 160 255 255 255 consonants 194 255 voicing 65 stressLength 0 1 2 3 4 5 6 7 stressAdd 250 350 700 500 450 290 100 225 stressAmp 16 16 24 24 16 16 20 24 ##Este archivo no incluye todas las configuraciones que se pueden usar para modificar una voz E Speak. Su objetivo es familiarizarlo con lo que hace la configuración. ##Sin envargo puedes visitar la página http://espeak.sourceforge.net/voices.html y consultar más información acerca de cómo agregar o cambiar otras configuraciones. ## Espero que te haya servido esta ayuda, y que te hayas divertido. ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Denis ================================================ language variant name Denis gender male 35 pitch 80 115 flutter 0 roughness 0 formant 0 100 160 160 formant 1 95 95 95 formant 2 100 100 100 formant 3 90 90 90 formant 4 40 40 40 formant 5 80 80 80 formant 6 10 10 10 formant 7 10 10 10 formant 8 10 10 10 voicing 40 consonants 80 80 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Diogo ================================================ language variant name Diogo gender male 25 pitch 82 122 echo 0 0 flutter 0 roughness 0 stressAmp 20 18 20 20 20 22 22 22 formant 0 105 200 140 formant 1 95 150 120 formant 2 100 120 140 formant 3 95 95 140 formant 4 30 30 30 -100 formant 5 90 90 90 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 voicing 35 consonants 60 40 tone 60 250 140 100 1000 50 3500 35 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Gene ================================================ language variant name Gene pitch 80 110 formant 0 120 120 120 formant 1 90 100 110 formant 2 100 100 95 formant 3 90 100 100 formant 4 90 100 110 formant 5 90 110 110 formant 6 100 70 100 formant 7 100 70 100 formant 8 100 80 100 voicing 120 consonants 50 110 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Gene2 ================================================ language variant name Gene2 pitch 100 130 formant 0 120 120 120 formant 1 90 100 110 formant 2 100 100 95 formant 3 90 100 100 formant 4 90 100 110 formant 5 90 110 110 formant 6 100 70 100 formant 7 100 70 100 formant 8 100 80 100 voicing 120 consonants 50 110 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Henrique ================================================ language variant name Henrique gender male 25 pitch 70 130 echo 0 0 flutter 0 roughness 0 stressAmp 20 18 20 20 20 22 22 22 formant 0 105 200 140 formant 1 95 150 120 formant 2 100 120 140 formant 3 95 95 140 formant 4 30 30 30 -100 formant 5 90 90 90 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 voicing 35 consonants 60 40 tone 70 250 230 80 1100 30 3500 40 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Hugo ================================================ language variant name Hugo gender male 25 pitch 70 130 echo 0 0 flutter 0 roughness 0 stressAmp 20 18 20 20 20 22 22 22 formant 0 105 200 140 formant 1 95 150 120 formant 2 100 120 140 formant 3 95 95 140 formant 4 30 30 30 -100 formant 5 90 90 90 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 voicing 35 consonants 60 40 tone 400 160 1100 90 3500 90 150 35 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Jacky ================================================ language variant name Jacky pitch 85 130 formant 0 150 155 100 formant 1 90 155 70 formant 2 95 70 64 formant 3 15 20 30 formant 4 20 30 40 formant 5 65 20 65 formant 6 70 80 100 formant 7 20 80 100 formant 8 100 95 80 voicing 135 consonants 110 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Lee ================================================ language variant name Lee gender Male #echo 230 30 pitch 85 110 flutter 0 formant 0 80 80 80 80 formant 1 80 80 100 100 formant 2 80 80 80 formant 3 9 9 9 formant 4 290 290 formant 5 130 0 0 formant 6 90 90 90 formant 7 90 90 90 formant 8 90 90 90 stressAdd 0 0 0 200 0 0 0 100 stressAmp 30 30 30 30 30 30 30 30 30 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Marco ================================================ language variant name Marco gender male 30 intonation 1 pitch 100 152 echo 50 80 flutter 2 roughness 0 stressAmp 25 25 24 20 38 31 39 27 stressAdd 250 125 250 250 225 145 50 256 formant 0 100 120 130 formant 1 75 180 170 formant 2 92 120 110 formant 3 140 120 110 formant 4 10 20 20 -50 formant 5 110 70 20 formant 6 140 100 98 formant 7 130 120 115 formant 8 105 120 108 voicing 38 consonants 90 140 tone 420 150 1200 135 3000 70 4700 40 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Mario ================================================ language variant name Mario pitch 75 125 formant 0 100 111 95 formant 1 100 111 60 formant 2 95 90 55 formant 3 100 50 65 formant 4 69 65 65 formant 5 79 60 75 formant 6 89 60 75 formant 7 99 0 100 formant 8 109 0 100 voicing 135 consonants 115 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Michael ================================================ language variant name Michael pitch 75 125 formant 0 105 111 95 formant 1 85 111 60 formant 2 95 90 55 formant 3 59 50 65 formant 4 69 65 65 formant 5 79 60 75 formant 6 89 60 75 formant 7 99 0 100 formant 8 109 0 100 voicing 135 consonants 115 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Mike ================================================ language variant name Mike voicing 70 formant 1 96 97 100 formant 2 96 97 100 formant 5 95 103 100 pitch 67 107 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Mr serious ================================================ ##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settings are and how to set them. ## Language sets the language of your voice. This setting is required for every voice that you make. ##The next line is a setting you can change. However if you don't know the language codes it may be best to leave the setting as it is. language variant ## The name setting is the name that will show up in the voice settings in the variant combo box. ##The next line is a setting you can change name Mr_Serious ##The formant settings ## Formant 0 is used to give a low frequency component to the sounds. ## The three numbers are frequency, strength, and Width, in that order. Please note, the numbers are seperated by a space. ##The next line is a setting you can change formant 0 100 100 100 # Formants 1,2, and 3 are the standard three formants which define vowels. ##The next 3 lines are settings you can change formant 1 100 100 100 formant 2 100 100 100 formant 3 87 100 100 # Formants 4,5 are higher than F3. They affect the quality of the voice. ##The next 2 lines are settings that you can change. formant 4 100 100 100 formant 5 100 100 100 ## Formants 6, 7, and 8 are weak, high frequency, additions to vowels to give a clearer sound. ##The next 3 lines are settings that you can change. formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 ##Intonation affects the rise and fall of the voice ## The settings are 1 default, 2 less intonation, 3 less intonation and commas do not raise the pitch, 4 the pitch rises at the end of a sentence rather than falling. ##The next line is a setting you can change. intonation 1 # Setting the pitch range. The first number gives a base pitch to the voice (value in Hertz). The second number controls the range of pitches used by the voice. Setting it equal # to the first number will give a monotone sounding voice. The default values are 82 and 118. pitch 82 118 ## The tone setting. The first number on the setting line, 600, is the frequency setting for the amount of bass in the voice. ## The second number on the tone line is the volume of the bass frequency. You can set it from 0 to 255, 0 being the least amount, 255 being the most. ##The third number on the tone line, 1200, is the mid range frequency. The fourth number on the line is the setting to change the volume of the mid range frequency. ##0 being the least amount and 255 being the maximum. ## The fifth number on the tone line, 2000, is the treble frequency. The sixth number is the volume of the treble frequency. 0 is the minimum and 255 is the maximum. ## You will notice that all 3 frequencies are set to 255. ##The next line is a setting that you can change. tone 600 255 1200 255 2000 255 ##This file does not include all of the settings that can be used to modify an E Speak voice. It is intended to get you familiar with what the settings do. ##However, you can go to http://espeak.sourceforge.net/voices.html and read further information about other settings that can be added and changed. I hope this helps, and Have fun. ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Nguyen ================================================ language variant name Nguyen pitch 95 175 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 75 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 tone 100 200 600 150 800 100 2400 80 3600 95 5400 100 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Reed ================================================ language variant name Reed klatt 6 consonants 85 85 voicing 130 breath 45 pitch 85 135 formant 1 72 100 90 90 formant 2 83 100 75 180 formant 3 98 100 100 90 formant 4 98 100 90 formant 5 100 100 90 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/RicishayMax ================================================ language variant name RicishayMax echo 100 10000 formant 0 90 120 100 formant 1 100 100 75 formant 2 100 100 75 formant 3 100 80 75 formant 4 100 80 75 formant 5 100 80 75 formant 6 100 0 75 formant 7 100 0 75 formant 8 100 0 75 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/RicishayMax2 ================================================ language variant name RicishayMax2 echo 150 500 formant 0 90 120 100 formant 1 100 100 75 formant 2 100 100 75 formant 3 100 80 75 formant 4 100 80 75 formant 5 100 80 75 formant 6 100 0 75 formant 7 100 0 75 formant 8 100 0 75 roughness 5 intonation 10 voicing 150 consonants 110 120 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/RicishayMax3 ================================================ language variant name RicishayMax3 echo 200 500 formant 0 90 120 100 formant 1 100 100 75 formant 2 100 100 75 formant 3 100 80 75 formant 4 100 80 75 formant 5 100 80 75 formant 6 100 0 75 formant 7 100 0 75 formant 8 100 0 75 roughness 5 intonation 10 voicing 150 consonants 110 120 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Storm ================================================ language variant language en-us name Storm gender male formant 0 100 100 100 formant 1 95 95 95 formant 2 95 95 95 formant 3 95 95 95 formant 4 70 70 70 formant 5 70 70 70 formant 6 25 25 25 formant 7 25 25 25 formant 8 25 25 25 breath 0 0 0 0 0 0 0 0 consonants 100 echo 0 0 flutter 0 intonation 3 pitch 60 100 roughness 0 stressAdd 5 5 3 3 0 0 -15 -15 tone 500 255 1500 255 2500 255 voicing 100 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/Tweaky ================================================ ##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settings are and how to set them. ## Language sets the language of your voice. This setting is required for every voice that you make. ##The next line is a setting you can change. However if you don't know the language codes it may be best to leave the setting as it is. language variant ## The name setting is the name that will show up in the voice settings in the variant combo box. ##The next line is a setting you can change name Tweaky ##The formant settings ## Formant 0 is used to give a low frequency component to the sounds. ## The three numbers are frequency, strength, and Width, in that order. Please note, the numbers are seperated by a space. ##The next line is a setting you can change formant 0 100 100 100 # Formants 1,2, and 3 are the standard three formants which define vowels. ##The next 3 lines are settings you can change formant 1 100 100 100 formant 2 100 100 100 formant 3 200 100 100 # Formants 4,5 are higher than F3. They affect the quality of the voice. ##The next 2 lines are settings that you can change. formant 4 100 100 100 formant 5 100 100 100 ## Formants 6, 7, and 8 are weak, high frequency, additions to vowels to give a clearer sound. ##The next 3 lines are settings that you can change. formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 ##Intonation affects the rise and fall of the voice ## The settings are 1 default, 2 less intonation, 3 less intonation and commas do not raise the pitch, 4 the pitch rises at the end of a sentence rather than falling. ##The next line is a setting you can change. intonation 1 # Setting the pitch range. The first number gives a base pitch to the voice (value in Hertz). The second number controls the range of pitches used by the voice. Setting it equal # to the first number will give a monotone sounding voice. The default values are 82 and 118. pitch 82 118 ## The tone setting. The first number on the setting line, 600, is the frequency setting for the amount of bass in the voice. ## The second number on the tone line is the volume of the bass frequency. You can set it from 0 to 255, 0 being the least amount, 255 being the most. ##The third number on the tone line, 1200, is the mid range frequency. The fourth number on the line is the setting to change the volume of the mid range frequency. ##0 being the least amount and 255 being the maximum. ## The fifth number on the tone line, 2000, is the treble frequency. The sixth number is the volume of the treble frequency. 0 is the minimum and 255 is the maximum. ## You will notice that all 3 frequencies are set to 255. ##The next line is a setting that you can change. tone 600 255 1200 255 2000 255 ##This file does not include all of the settings that can be used to modify an E Speak voice. It is intended to get you familiar with what the settings do. ##However, you can go to http://espeak.sourceforge.net/voices.html and read further information about other settings that can be added and changed. I hope this helps, and Have fun. ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/UniRobot ================================================ language variant name UniversalRobot gender male klatt 4 pitch 100 160 echo 10 10000 formant 1 75 120 135 formant 2 90 50 140 formant 3 70 85 95 formant 4 150 60 80 formant 5 100 85 80 formant 6 112 100 80 formant 7 110 95 100 formant 8 105 110 100 consonants 125 100 tone 530 250 770 100 215 225 stressLength 0 1 2 3 4 5 6 7 stressAdd 120 130 130 90 0 0 120 120 stressAmp 16 16 24 24 16 16 20 24 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/adam ================================================ language variant name Adam klatt 6 consonants 85 85 formant 1 100 100 130 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/anika ================================================ language variant name anika gender female pitch 200 300 flutter 6 stressAmp 20 18 20 20 20 22 22 22 roughness 0 formant 0 105 200 140 formant 1 95 150 120 formant 2 100 120 140 formant 3 95 95 140 formant 4 120 120 110 formant 5 120 120 110 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 intonation 10 voicing 30 consonants 60 40 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/anikaRobot ================================================ language variant name anikaRobot gender female pitch 200 300 flutter 1 stressAmp 20 18 20 20 20 22 22 22 echo 10 10000 roughness 0 formant 0 105 200 140 formant 1 95 150 120 formant 2 100 120 140 formant 3 95 95 140 formant 4 120 120 110 formant 5 120 120 110 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 intonation 10 voicing 30 consonants 60 40 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/announcer ================================================ name Half-LifeAnnouncementSystem language variant pitch 37 83 klatt 4 formant 1 88 100 100 0 formant 2 96 100 100 0 formant 3 98 100 100 0 formant 4 96 100 100 0 formant 5 100 100 100 0 formant 6 100 100 100 0 formant 7 100 100 100 0 formant 8 100 100 100 0 voicing 70 consonants 70 70 echo 154 26 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/antonio ================================================ language variant name Antonio gender male pitch 82 128 roughness 0 formant 0 100 150 90 formant 1 90 130 90 formant 2 95 120 80 formant 3 100 50 80 formant 4 100 40 80 formant 5 90 70 80 formant 6 0 0 0 formant 7 100 100 100 formant 8 100 100 100 voicing 150 tone 600 255 1200 255 2000 80 intonation 3 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/aunty ================================================ language variant name Auntie gender female pitch 204 176 flutter 12 formant 0 88 85 154 formant 1 115 80 160 -20 formant 2 130 75 150 -200 formant 3 123 75 150 formant 4 125 80 150 formant 5 125 80 150 formant 6 110 80 150 formant 7 110 75 150 formant 8 110 75 150 stressAdd -20 -20 -20 -20 0 0 20 120 stressAmp 18 16 20 20 20 20 20 20 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/belinda ================================================ language variant name Belinda gender female pitch 200 247 flutter 3 formant 0 88 85 154 formant 1 135 58 169 -30 formant 2 120 70 150 -260 formant 3 120 39 150 formant 4 125 57 80 formant 5 125 80 150 formant 6 110 80 150 formant 7 110 75 150 formant 8 110 75 150 stressAdd -20 -20 -20 -20 0 3 20 12 stressAmp 18 16 20 20 10 20 27 20 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/benjamin ================================================ language variant name Benjamin klatt 6 consonants 70 70 formant 1 101 100 130 formant 2 102 100 100 formant 3 100 100 100 formant 4 100 100 100 470 formant 5 100 100 100 350 formant 6 100 100 100 100 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/boris ================================================ language variant name Boris formant 0 47 120 100 formant 1 100 90 75 formant 2 104 100 75 formant 3 57 80 75 formant 4 104 80 75 formant 5 107 80 75 formant 6 68 0 75 formant 7 105 0 75 formant 8 105 0 75 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/caleb ================================================ language variant name Caleb klatt 6 breath 100 voicing 0 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/croak ================================================ language variant name croak gender male 70 pitch 85 117 flutter 20 formant 0 100 80 110 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/david ================================================ language variant name David klatt 6 pitch 62 89 formant 1 75 100 100 formant 2 85 100 100 formant 3 85 100 100 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/ed ================================================ language variant name Ed pitch 90 145 formant 0 110 120 200 5 formant 1 102 100 80 formant 2 101 120 100 formant 3 100 80 75 formant 4 150 30 80 formant 5 95 95 155 formant 6 167 100 75 formant 7 100 200 75 formant 8 60 200 95 consonants 55 80 voicing 100 tone 650 250 1000 130 240 255 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/edward ================================================ language variant name Edward klatt 5 voicing 100 consonants 70 80 formant 1 92 100 130 formant 2 103 100 80 formant 3 103 100 70 formant 4 114 100 60 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/edward2 ================================================ language variant name Edward2 klatt 6 voicing 100 consonants 70 80 formant 1 92 100 130 formant 2 103 100 80 formant 3 103 100 70 formant 4 114 100 60 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/f1 ================================================ language variant name female1 gender female 70 pitch 140 200 flutter 8 roughness 4 formant 0 115 80 150 formant 1 120 80 180 formant 2 100 70 150 150 formant 3 115 70 150 formant 4 110 80 150 formant 5 110 90 150 formant 6 105 80 150 formant 7 110 70 150 formant 8 110 70 150 stressAdd -10 -10 -20 -20 0 0 40 60 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/f2 ================================================ language variant name female2 gender female pitch 142 220 roughness 3 formant 0 105 80 150 formant 1 110 80 160 formant 2 110 70 150 formant 3 110 70 150 formant 4 115 80 150 formant 5 115 80 150 formant 6 110 70 150 formant 7 110 70 150 formant 8 110 70 150 stressAdd 0 0 -10 -10 0 0 10 40 breath 0 2 3 3 3 3 3 2 echo 140 10 consonants 125 125 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/f3 ================================================ language variant name female3 gender female pitch 140 240 formant 0 105 80 150 formant 1 120 75 150 -50 formant 2 135 70 150 -250 formant 3 125 80 150 formant 4 125 80 150 formant 5 125 80 150 formant 6 120 70 150 formant 7 110 70 150 formant 8 110 70 150 stressAmp 18 18 20 20 20 20 20 20 //breath 0 2 4 4 4 4 4 4 breath 0 2 3 3 3 3 3 2 echo 120 10 roughness 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/f4 ================================================ language variant name female4 gender female echo 130 15 pitch 142 200 formant 0 120 80 150 formant 1 115 80 160 -20 formant 2 130 75 150 -200 formant 3 123 75 150 formant 4 125 80 150 formant 5 125 80 150 formant 6 110 80 150 formant 7 110 75 150 formant 8 110 75 150 stressAdd -20 -20 -20 -20 0 0 20 120 stressAmp 18 16 20 20 20 20 20 20 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/f5 ================================================ language variant name female5 gender female pitch 160 228 roughness 0 formant 0 105 80 150 formant 1 110 80 160 formant 2 110 70 150 formant 3 110 70 150 formant 4 115 80 200 formant 5 115 80 100 formant 6 110 70 150 formant 7 110 70 100 formant 8 110 70 150 stressAdd 0 0 -10 -10 0 0 10 40 breath 0 4 6 6 6 6 0 10 echo 140 10 voicing 75 consonants 150 150 breathw 150 150 200 200 400 400 600 600 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/fast ================================================ language variant name fast_test // Try decreasing these values to make eSpeak's fastest speed faster. // This is currently unstable. fast_test2 15 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/grandma ================================================ language variant name grandma gender female 90 pitch 120 230 flutter 20 formant 0 105 150 150 formant 1 100 80 100 formant 2 105 105 105 formant 3 80 80 80 formant 4 60 60 60 formant 5 90 90 90 formant 6 10 10 10 formant 7 10 10 10 formant 8 20 20 20 voicing 50 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/grandpa ================================================ language variant name grandpa pitch 80 120 flutter 20 formant 0 100 100 100 formant 1 100 100 100 formant 2 100 100 100 formant 3 100 100 100 formant 4 100 100 100 formant 5 100 100 100 formant 6 10 10 10 formant 7 10 10 10 formant 8 10 10 10 intonation 1 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/gustave ================================================ language variant name Gustave pitch 80 123 formant 0 85 141 135 formant 1 77 131 45 formant 2 92 70 55 formant 3 59 50 65 formant 4 69 65 65 formant 5 79 60 75 formant 6 89 60 75 formant 7 99 0 100 formant 8 109 0 100 voicing 135 consonants 115 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/ian ================================================ ##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settings are and how to set them. ## Language sets the language of your voice. This setting is required for every voice that you make. ##The next line is a setting you can change. However if you don't know the language codes it may be best to leave the setting as it is. language variant ## The name setting is the name that will show up in the voice settings in the variant combo box. ##The next line is a setting you can change name Ian ##The formant settings ## Formant 0 is used to give a low frequency component to the sounds. ## The three numbers are frequency, strength, and Width, in that order. Please note, the numbers are seperated by a space. ##The next line is a setting you can change formant 0 20 120 50 # Formants 1,2, and 3 are the standard three formants which define vowels. ##The next 3 lines are settings you can change formant 1 80 80 80 formant 2 80 80 80 formant 3 80 80 80 # Formants 4,5 are higher than F3. They affect the quality of the voice. ##The next 2 lines are settings that you can change. formant 4 50 50 50 formant 5 50 50 50 ## Formants 6, 7, and 8 are weak, high frequency, additions to vowels to give a clearer sound. ##The next 3 lines are settings that you can change. formant 6 100 100 100 formant 7 200 50 200 formant 8 200 50 200 ##Intonation affects the rise and fall of the voice ## The settings are 1 default, 2 less intonation, 3 less intonation and commas do not raise the pitch, 4 the pitch rises at the end of a sentence rather than falling. ##The next line is a setting you can change. intonation 2 # Setting the pitch range. The first number gives a base pitch to the voice (value in Hertz). The second number controls the range of pitches used by the voice. # Setting it equal to the first number will give a monotone sounding voice. The default values are 82 and 118. pitch 69 96 ## The tone setting. The first number on the setting line, 600, is the frequency setting for the amount of bass in the voice. ##The second number on the tone line is the volume of the bass frequency. You can set it from 0 to 255, 0 being the least amount, 255 being the most. ##The third number on the tone line, 1200, is the mid range frequency. The fourth number on the line is the setting to change the volume of the mid range frequency. ##0 being the least amount and 255 being the maximum. ## The fifth number on the tone line, 2000, is the treble frequency. The sixth number is the volume of the treble frequency. 0 is the minimum and 255 is the maximum. ## You will notice that all 3 frequencies are set to 255. ##The next line is a setting that you can change. tone 1000 127 1200 127 2000 127 ##This file does not include all of the settings that can be used to modify an E Speak voice. It is intended to get you familiar with what the settings do. ##However, you can go to http://espeak.sourceforge.net/voices.html and read further information about other settings that can be added and changed. I hope this helps, and Have fun. ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/iven ================================================ language variant name Iven pitch 74 118 formant 0 52 133 88 formant 1 87 82 76 formant 2 94 56 42 formant 3 93 52 130 formant 4 110 76 65 formant 5 102 45 20 formant 6 40 50 50 formant 7 60 50 60 formant 8 100 50 40 voicing 530 tone 600 255 1200 255 2000 160 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/iven2 ================================================ language variant name Iven2 pitch 74 118 formant 0 52 133 88 formant 1 87 82 76 formant 2 94 56 42 formant 3 93 52 130 formant 4 110 76 65 formant 5 102 45 20 formant 6 40 50 50 formant 7 60 50 60 formant 8 100 50 40 voicing 220 consonants 28 42 tone 600 255 1200 255 2000 150 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/iven3 ================================================ language variant name Iven3 pitch 74 118 formant 0 52 133 88 formant 1 87 82 76 formant 2 94 56 42 formant 3 93 52 130 formant 4 110 76 65 formant 5 102 45 20 formant 6 40 50 50 formant 7 60 50 60 formant 8 100 50 40 voicing 165 tone 600 255 1200 255 2000 160 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/iven4 ================================================ language variant name Iven4 pitch 74 118 formant 0 52 133 88 formant 1 87 82 76 formant 2 94 56 42 formant 3 93 52 130 formant 4 110 76 65 formant 5 102 45 20 formant 6 40 50 50 formant 7 60 50 60 formant 8 100 50 40 voicing 165 tone 600 170 1200 100 2000 40 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/john ================================================ ##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settings are and how to set them. ## Language sets the language of your voice. This setting is required for every voice that you make. ##The next line is a setting you can change. However if you don't know the language codes it may be best to leave the setting as it is. language variant ## The name setting is the name that will show up in the voice settings in the variant combo box. ##The next line is a setting you can change name John ##The formant settings ## Formant 0 is used to give a low frequency component to the sounds. ## The three numbers are frequency, strength, and Width, in that order. Please note, the numbers are seperated by a space. ##The next line is a setting you can change formant 0 100 100 100 # Formants 1,2, and 3 are the standard three formants which define vowels. ##The next 3 lines are settings you can change formant 1 100 100 100 formant 2 100 100 100 formant 3 100 100 100 # Formants 4,5 are higher than F3. They affect the quality of the voice. ##The next 2 lines are settings that you can change. formant 4 100 100 100 formant 5 100 100 100 ## Formants 6, 7, and 8 are weak, high frequency, additions to vowels to give a clearer sound. ##The next 3 lines are settings that you can change. formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 ##Intonation affects the rise and fall of the voice ## The settings are 1 default, 2 less intonation, 3 less intonation and commas do not raise the pitch, 4 the pitch rises at the end of a sentence rather than falling. ##The next line is a setting you can change. intonation 1 # Setting the pitch range. The first number gives a base pitch to the voice (value in Hertz). The second number controls the range of pitches used by the voice. # Setting it equal to the first number will give a monotone sounding voice. The default values are 82 and 118. pitch 82 118 ## The tone setting. The first number on the setting line, 600, is the frequency setting for the amount of bass in the voice. ##The second number on the tone line is the volume of the bass frequency. You can set it from 0 to 255, 0 being the least amount, 255 being the most. ##The third number on the tone line, 1200, is the mid range frequency. The fourth number on the line is the setting to change the volume of the mid range frequency. ##0 being the least amount and 255 being the maximum. ## The fifth number on the tone line, 2000, is the treble frequency. The sixth number is the volume of the treble frequency. 0 is the minimum and 255 is the maximum. ## You will notice that all 3 frequencies are set to 255. ##The next line is a setting that you can change. tone 600 255 1200 255 2000 255 ##This file does not include all of the settings that can be used to modify an E Speak voice. It is intended to get you familiar with what the settings do. ##However, you can go to http://espeak.sourceforge.net/voices.html and read further information about other settings that can be added and changed. I hope this helps, and Have fun. ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/kaukovalta ================================================ language variant name Kaukovalta formant 0 80 80 100 formant 1 40 80 100 formant 2 70 100 130 formant 3 80 100 60 formant 4 70 90 100 formant 5 70 90 100 formant 6 70 100 90 formant 7 100 90 110 formant 8 100 95 100 pitch 70 120 tone 100 130 800 130 2000 130 consonants 70 70 roughness 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/klatt ================================================ language variant name klatt klatt 1 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/klatt2 ================================================ language variant name klatt2 klatt 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/klatt3 ================================================ language variant name klatt3 klatt 3 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/klatt4 ================================================ language variant name klatt4 klatt 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/klatt5 ================================================ language variant name klatt5 klatt 5 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/klatt6 ================================================ language variant name klatt6 klatt 6 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/linda ================================================ language variant name Linda gender female #echo 130 15 pitch 200 247 flutter 3 formant 0 88 85 154 formant 1 135 58 169 -30 formant 2 131 75 152 -260 formant 3 123 75 150 formant 4 125 80 150 formant 5 125 80 150 formant 6 110 80 150 formant 7 110 75 150 formant 8 110 75 150 stressAdd -20 -20 -20 -20 0 3 20 120 stressAmp 18 16 20 20 20 20 27 20 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m1 ================================================ language variant name male1 gender male 70 pitch 75 109 flutter 5 roughness 4 consonants 80 100 formant 0 98 100 100 formant 1 97 100 100 formant 2 97 95 100 formant 3 97 95 100 formant 4 97 85 100 formant 5 105 80 100 formant 6 95 80 100 formant 7 100 100 100 formant 8 100 100 100 //stressAdd -10 -10 -20 -20 0 0 40 70 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m2 ================================================ language variant name male2 gender male pitch 88 115 echo 130 15 formant 0 100 80 120 formant 1 90 85 120 formant 2 110 85 120 formant 3 105 90 120 formant 4 100 90 120 formant 5 100 90 120 formant 6 100 90 120 formant 7 100 90 120 formant 8 100 90 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m3 ================================================ language variant name male3 gender male pitch 80 122 formant 0 100 100 100 formant 1 96 97 100 formant 2 96 97 100 formant 3 96 103 100 formant 4 95 103 100 formant 5 95 103 100 formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 consonants 100 stressAdd 10 10 0 0 0 0 -30 -30 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m4 ================================================ language variant name male4 gender male pitch 70 110 formant 0 103 100 100 formant 1 103 100 100 formant 2 103 100 100 formant 3 103 100 100 formant 4 106 100 100 formant 5 106 100 100 formant 6 106 100 100 formant 7 103 100 100 formant 8 103 100 100 stressAdd -10 -10 -30 -30 0 0 60 90 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m5 ================================================ language variant name male5 gender male formant 0 100 85 130 formant 1 90 85 130 40 formant 2 80 85 130 310 formant 3 105 85 130 formant 4 105 85 130 formant 5 105 85 130 formant 6 105 85 150 formant 7 105 85 150 formant 8 105 85 150 intonation 2 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m6 ================================================ language variant name male6 gender male pitch 82 117 formant 0 100 90 120 formant 1 100 90 140 formant 2 100 70 140 formant 3 100 75 140 formant 4 100 80 140 formant 5 100 80 140 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m7 ================================================ language variant name male7 gender male pitch 75 125 formant 0 100 125 100 formant 1 100 90 80 formant 2 100 70 90 formant 3 100 60 90 formant 4 100 60 90 formant 5 75 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 voicing 155 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/m8 ================================================ language variant name male8 gender male 50 pitch 65 102 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 100 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/marcelo ================================================ language variant name Marcelo pitch 65 115 formant 0 65 161 35 formant 1 75 131 65 formant 2 90 60 40 formant 3 59 50 55 formant 4 69 65 35 formant 5 69 60 25 formant 6 59 60 35 formant 7 149 0 10 formant 8 199 0 90 voicing 135 consonants 115 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/max ================================================ language variant name Max formant 0 90 120 100 formant 1 100 100 75 formant 2 100 100 75 formant 3 100 80 75 formant 4 100 80 75 formant 5 100 80 75 formant 6 100 0 75 formant 7 100 0 75 formant 8 100 0 75 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/michel ================================================ language variant name Michel gender male 25 pitch 82 122 echo 0 0 flutter 0 roughness 0 stressAmp 20 18 20 20 20 22 22 22 formant 0 105 200 140 formant 1 95 150 120 formant 2 100 120 140 formant 3 95 95 140 formant 4 30 30 30 -100 formant 5 90 90 90 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 voicing 35 consonants 60 40 tone 400 160 1500 100 3000 70 4500 40 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/miguel ================================================ language variant name Miguel gender male 25 pitch 80 130 echo 0 0 flutter 0 roughness 0 stressAmp 20 18 20 20 20 22 22 22 formant 0 105 200 140 formant 1 95 150 120 formant 2 100 120 140 formant 3 95 95 140 formant 4 30 30 30 -100 formant 5 90 90 90 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 voicing 35 consonants 60 40 tone 300 240 400 160 1500 100 3000 70 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/mike2 ================================================ language variant name Mike2 klatt 6 voicing 170 pitch 67 107 formant 1 95 100 100 formant 2 95 100 100 formant 3 105 100 100 formant 4 115 100 100 formant 5 115 100 100 consonants 70 150 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/norbert ================================================ ##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settings are and how to set them. ## Language sets the language of your voice. This setting is required for every voice that you make. ##The next line is a setting you can change. However if you don't know the language codes it may be best to leave the setting as it is. language variant ## The name setting is the name that will show up in the voice settings in the variant combo box. ##The next line is a setting you can change name norbert ##The formant settings ## Formant 0 is used to give a low frequency component to the sounds. ## The three numbers are frequency, strength, and Width, in that order. Please note, the numbers are seperated by a space. ##The next line is a setting you can change formant 0 100 100 100 # Formants 1,2, and 3 are the standard three formants which define vowels. ##The next 3 lines are settings you can change formant 1 100 100 100 formant 2 75 50 100 formant 3 100 100 100 # Formants 4,5 are higher than F3. They affect the quality of the voice. ##The next 2 lines are settings that you can change. formant 4 100 100 100 formant 5 100 100 100 ## Formants 6, 7, and 8 are weak, high frequency, additions to vowels to give a clearer sound. ##The next 3 lines are settings that you can change. formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 ##Intonation affects the rise and fall of the voice ## The settings are 1 default, 2 less intonation, 3 less intonation and commas do not raise the pitch, 4 the pitch rises at the end of a sentence rather than falling. ##The next line is a setting you can change. intonation 1 # Setting the pitch range. The first number gives a base pitch to the voice (value in Hertz). The second number controls the range of pitches used by the voice. Setting it equal # to the first number will give a monotone sounding voice. The default values are 82 and 118. pitch 82 118 ## The tone setting. The first number on the setting line, 600, is the frequency setting for the amount of bass in the voice. ## The second number on the tone line is the volume of the bass frequency. You can set it from 0 to 255, 0 being the least amount, 255 being the most. ##The third number on the tone line, 1200, is the mid range frequency. The fourth number on the line is the setting to change the volume of the mid range frequency. ##0 being the least amount and 255 being the maximum. ## The fifth number on the tone line, 2000, is the treble frequency. The sixth number is the volume of the treble frequency. 0 is the minimum and 255 is the maximum. ## You will notice that all 3 frequencies are set to 255. ##The next line is a setting that you can change. tone 600 255 1000 100 5000 255 ##This file does not include all of the settings that can be used to modify an E Speak voice. It is intended to get you familiar with what the settings do. ##However, you can go to http://espeak.sourceforge.net/voices.html and read further information about other settings that can be added and changed. I hope this helps, and Have fun. ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/pablo ================================================ ##Pleas note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settings are and how to set them. ## Language sets the language of your voice. This setting is required for every voice that you make. ##The next line is a setting you can change. However if you don't know the language codes it may be best to leave the setting as it is. language variant ## The name setting is the name that will show up in the voice settings in the variant combo box. ##The next line is a setting you can change name Pablo ##The formant settings ## Formant 0 is used to give a low frequency component to the sounds. ## The three numbers are frequency, strength, and Width, in that order. Please note, the numbers are seperated by a space. ##The next line is a setting you can change formant 0 90 100 90 # Formants 1,2, and 3 are the standard three formants which define vowels. ##The next 3 lines are settings you can change formant 1 95 100 80 formant 2 97 100 80 formant 3 98 90 80 # Formants 4,5 are higher than F3. They affect the quality of the voice. ##The next 2 lines are settings that you can change. formant 4 110 100 100 formant 5 110 100 100 ## Formants 6, 7, and 8 are weak, high frequency, additions to vowels to give a clearer sound. ##The next 3 lines are settings that you can change. formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 ##Intonation affects the rise and fall of the voice ## The settings are 1 default, 2 less intonation, 3 less intonation and commas do not raise the pitch, 4 the pitch rises at the end of a sentence rather than falling. ##The next line is a setting you can change. intonation 3 echo 30 30 # Setting the pitch range. The first number gives a base pitch to the voice (value in Hertz). The second number controls the range of pitches used by the voice. Setting it equal # to the first number will give a monotone sounding voice. The default values are 82 and 118. pitch 82 130 ## The tone setting. The first number on the setting line, 600, is the frequency setting for the amount of bass in the voice. ## The second number on the tone line is the volume of the bass frequency. You can set it from 0 to 255, 0 being the least amount, 255 being the most. ##The third number on the tone line, 1200, is the mid range frequency. The fourth number on the line is the setting to change the volume of the mid range frequency. ## 0 being the least amount and 255 being the maximum. ## The fifth number on the tone line, 2000, is the treble frequency. The sixth number is the volume of the treble frequency. 0 is the minimum and 255 is the maximum. ## You will notice that all 3 frequencies are set to 255. ##The next line is a setting that you can change. tone 600 255 1200 200 2000 255 ##This file does not include all of the settings that can be used to modify an E Speak voice. It is intended to get you familiar with what the settings do. #However, you can go to http://espeak.sourceforge.net/voices.html and read further information about other settings that can be added and changed. I hope this helps, and Have fun. ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/paul ================================================ language variant name Paul pitch 70 100 formant 0 90 120 100 formant 1 103 100 75 formant 2 98 100 75 formant 3 100 80 75 formant 4 102 30 100 formant 5 100 80 100 formant 6 100 80 75 formant 7 100 0 75 formant 8 100 60 75 consonants 90 60 voicing 230 tone 420 255 1300 130 4000 100 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/pedro ================================================ language variant name Pedro formant 0 100 150 100 formant 1 95 100 80 formant 2 95 100 80 formant 3 100 100 90 formant 4 100 100 100 formant 5 100 100 100 formant 6 100 100 100 formant 7 100 100 100 formant 8 100 100 100 intonation 3 pitch 82 118 tone 600 255 1200 255 2000 255 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/quincy ================================================ language variant name Quincy pitch 67 100 formant 0 85 108 106 3 formant 1 97 110 56 formant 2 96 80 60 formant 3 101 50 50 formant 4 110 33 55 formant 5 110 22 65 formant 6 77 60 60 65 formant 7 66 0 100 formant 8 100 0 100 voicing 99 consonants 66 90 roughness 0 tone 600 170 1200 100 2000 70 stressAmp 16 16 24 20 20 16 28 24 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/rob ================================================ language variant name Rob pitch 50 130 formant 0 100 100 100 formant 1 95 100 60 formant 2 97 90 50 formant 3 101 70 50 formant 4 110 65 55 formant 5 110 70 65 formant 6 110 70 65 formant 7 0 0 0 formant 8 0 0 0 voicing 115 consonants 110 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robert ================================================ language variant name Robert pitch 65 115 formant 0 85 108 100 formant 1 95 110 60 formant 2 97 90 50 formant 3 101 50 50 formant 4 110 65 55 formant 5 110 60 65 formant 6 110 60 65 formant 7 100 0 100 formant 8 100 0 100 voicing 115 consonants 110 120 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft ================================================ language variant name Robosoft echo 30 1000 klatt 5 pitch 60 90 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 100 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 roughness 50 intonation 0 voicing 80 consonants 110 120 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft2 ================================================ language variant name Robosoft2 echo 10 600 klatt 4 pitch 70 100 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 100 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 roughness 75 intonation -25 voicing 80 consonants 110 120 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft3 ================================================ language variant name Robosoft3 echo 10 10000 klatt 4 pitch 75 115 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 100 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 roughness 5 intonation 10 voicing 150 consonants 110 120 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft4 ================================================ language variant name Robosoft4 echo 10 10000 pitch 75 115 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 100 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 roughness 5 intonation 10 voicing 150 consonants 110 120 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft5 ================================================ language variant name Robosoft5 echo 10 10000 pitch 75 115 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 100 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 roughness 0 intonation 10 voicing 150 consonants 60 40 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 stressAmp 16 16 24 24 16 16 20 24 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft6 ================================================ language variant name Robosoft6 echo 40 10000 pitch 150 150 formant 0 100 125 100 formant 1 96 90 80 formant 2 97 70 90 formant 3 97 60 90 formant 4 97 60 90 formant 5 100 50 90 formant 6 90 50 100 formant 7 100 50 100 formant 8 100 50 100 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft7 ================================================ language variant name Robosoft7 echo 10 10000 pitch 75 115 formant 0 90 120 100 formant 1 100 100 75 formant 2 100 100 75 formant 3 100 80 75 formant 4 100 80 75 formant 5 100 80 75 formant 6 100 0 75 formant 7 100 0 75 formant 8 100 0 75 roughness 0 intonation 10 voicing 150 consonants 60 40 stressLength 0 1 2 3 4 5 6 7 stressAdd 130 140 140 100 0 0 130 160 tone 100 255 600 70 1200 22 2000 66 3000 12 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/robosoft8 ================================================ language variant name Robosoft8 echo 40 10000 pitch 150 150 formant 0 90 120 100 formant 1 100 100 75 formant 2 100 100 75 formant 3 100 80 75 formant 4 100 80 75 formant 5 100 80 75 formant 6 100 0 75 formant 7 100 0 75 formant 8 100 0 75 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/sandro ================================================ // This file is UTF-8 encoded // Variant sandro (ver.25-3) for eSpeak-ng Copyright (C)2019 by Lolo vmanolo301@gmail.com language variant name sandro gender male formant 0 95 146 100 formant 1 98 90 100 formant 2 103 98 100 formant 3 100 90 100 formant 4 100 101 100 formant 5 110 120 100 2123 formant 6 100 100 100 1200 formant 7 32 125 80 600 formant 8 34 95 30 49 voicing 165 consonants 194 255 pitch 78 115 roughness 3 breath 20 5 2 10 5 0 27 100 breathw 255 255 60 180 160 255 255 255 tone 500 210 470 70 160 155 2985 32 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/shelby ================================================ language variant name shelby flutter 0 roughness 0 formant 0 100 160 190 formant 1 90 90 90 formant 2 140 140 140 formant 3 130 150 130 formant 4 110 110 110 formant 5 120 120 110 formant 6 10 10 10 formant 7 10 10 10 formant 8 10 10 10 pitch 100 210 voicing 40 consonants 90 70 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/steph ================================================ language variant name Steph gender female pitch 166 200 flutter 1 roughness 0 tone 100 255 600 70 1200 22 2000 66 3000 12 formant 0 99 80 150 formant 1 120 60 160 formant 2 99 70 110 150 formant 3 116 77 150 formant 4 9 59 110 formant 5 100 50 2 formant 6 104 80 150 formant 7 110 70 150 formant 8 110 70 150 stressAmp 16 16 24 24 16 16 20 24 consonants 55 90 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/steph2 ================================================ language variant name Steph2 gender female pitch 166 200 flutter 1 roughness 0 tone 100 255 600 70 1200 22 2000 66 3000 12 formant 0 99 100 150 formant 1 120 80 160 formant 2 99 90 110 150 formant 3 116 97 150 formant 4 9 73 116 formant 5 100 70 2 formant 6 104 100 150 formant 7 110 90 150 formant 8 110 90 150 stressAmp 16 16 24 24 16 16 20 24 consonants 55 90 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/steph3 ================================================ language variant name Steph3 gender female pitch 166 200 flutter 1 roughness 0 voicing 200 tone 100 255 600 70 1200 22 2000 66 3000 12 formant 0 99 80 150 formant 1 120 60 160 formant 2 99 70 110 150 formant 3 116 77 150 formant 4 9 59 110 formant 5 100 50 2 formant 6 104 80 150 formant 7 110 70 150 formant 8 110 70 150 stressAmp 16 16 24 24 16 16 20 24 consonants 70 90 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/travis ================================================ language variant name travis gender male 30 pitch 75 120 formant 0 90 90 90 90 formant 1 50 100 80 95 formant 2 90 60 90 100 formant 3 80 80 90 100 formant 4 50 90 100 100 formant 5 100 95 100 55 formant 6 80 50 100 85 formant 7 60 60 60 120 formant 8 80 80 140 100 tone 600 100 1000 200 1500 50 flutter 1 roughness 3 voicing 200 consonants 120 190 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/victor ================================================ language variant name victor gender male 25 formant 0 100 100 100 formant 1 95 95 95 formant 2 90 90 90 formant 3 90 90 90 formant 4 40 40 40 formant 5 80 80 80 formant 6 20 20 20 formant 7 20 20 20 formant 8 20 20 20 pitch 80 110 voicing 60 breath 2 4 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/whisper ================================================ language variant name whisper gender male pitch 82 117 flutter 20 formant 0 100 0 100 formant 1 100 80 100 voicing 17 breath 75 75 50 40 15 10 breathw 150 150 200 200 400 400 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/whisperf ================================================ language variant name female_whisper gender female pitch 160 220 roughness 3 formant 0 105 0 150 formant 1 110 40 160 formant 2 110 70 150 formant 3 110 70 150 formant 4 115 80 150 formant 5 115 80 150 formant 6 110 70 150 formant 7 110 70 150 formant 8 110 70 150 stressAdd 0 0 -10 -10 0 0 10 40 // whisper voicing 20 breath 75 75 50 40 15 10 breathw 150 150 200 200 400 400 ================================================ FILE: app/src/main/assets/espeak-ng-data/voices/!v/zac ================================================ language variant name Zac flutter 5 pitch 240 390 formant 0 145 100 145 formant 1 145 100 145 formant 2 145 100 145 formant 3 145 100 145 formant 4 145 100 145 formant 5 145 120 145 formant 6 145 120 145 formant 7 145 120 145 formant 8 145 120 145 voicing 80 ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/CheckVoiceData.kt ================================================ package com.k2fsa.sherpa.onnx.tts.engine import android.content.Context import android.content.Intent import android.os.Bundle import android.speech.tts.TextToSpeech import androidx.appcompat.app.AppCompatActivity class CheckVoiceData : AppCompatActivity() { lateinit var mContext: Context override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mContext = this val intent = Intent().apply { putStringArrayListExtra( TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES, TtsEngine.getAvailableLanguages(mContext) ) putStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES, arrayListOf()) } setResult(TextToSpeech.Engine.CHECK_VOICE_DATA_PASS, intent) finish() } } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/Downloader.java ================================================ package com.k2fsa.sherpa.onnx.tts.engine; import android.app.Activity; import android.util.Log; import android.view.View; import android.widget.Toast; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import com.k2fsa.sherpa.onnx.tts.engine.databinding.ActivityManageLanguagesBinding; @SuppressWarnings("ResultOfMethodCallIgnored") public class Downloader { static final String onnxModel = "model.onnx"; static final String tokens = "tokens.txt"; static long onnxModelDownloadSize = 0L; static long tokensDownloadSize = 0L; static boolean onnxModelFinished = false; static boolean tokensFinished = false; static int onnxModelSize = 0; static int tokensSize = 0; public static void downloadModels(final Activity activity, ActivityManageLanguagesBinding binding, String model, String lang, String country, String type) { String modelName=""; if (type.equals("vits-piper")) modelName = model + ".onnx"; else if (type.equals("vits-coqui")) modelName = "model.onnx"; String onnxModelUrl = "https://huggingface.co/csukuangfj/"+ type + "-" + model + "/resolve/main/" + modelName; String tokensUrl = "https://huggingface.co/csukuangfj/" + type + "-" + model + "/resolve/main/tokens.txt"; File directory = new File(activity.getExternalFilesDir(null)+ "/" + lang + country + "/"); if (!directory.exists() && !directory.mkdirs()) { Log.e("TTS Engine", "Failed to make directory: " + directory); return; } activity.runOnUiThread(() -> binding.downloadSize.setVisibility(View.VISIBLE)); File onnxModelFile = new File(activity.getExternalFilesDir(null)+ "/" + lang + country + "/" + onnxModel); if (onnxModelFile.exists()) onnxModelFile.delete(); if (!onnxModelFile.exists()) { onnxModelFinished = false; Log.d("TTS Engine", "onnx model file does not exist"); Thread thread = new Thread(() -> { try { URL url; url = new URL(onnxModelUrl); Log.d("TTS Engine", "Download model"); URLConnection ucon = url.openConnection(); ucon.setReadTimeout(5000); ucon.setConnectTimeout(10000); onnxModelSize = ucon.getContentLength(); InputStream is = ucon.getInputStream(); BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5); File tempOnnxFile = new File(activity.getExternalFilesDir(null)+ "/" + lang + country + "/" + "model.tmp"); if (tempOnnxFile.exists()) tempOnnxFile.delete(); FileOutputStream outStream = new FileOutputStream(tempOnnxFile); byte[] buff = new byte[5 * 1024]; int len; while ((len = inStream.read(buff)) != -1) { outStream.write(buff, 0, len); if (tempOnnxFile.exists()) onnxModelDownloadSize = tempOnnxFile.length(); activity.runOnUiThread(() -> { binding.downloadSize.setText((tokensDownloadSize + onnxModelDownloadSize)/1024/1024 + " MB / " + (onnxModelSize + tokensSize)/1024/1024 + " MB"); }); } outStream.flush(); outStream.close(); inStream.close(); if (!tempOnnxFile.exists()) { throw new IOException(); } tempOnnxFile.renameTo(onnxModelFile); onnxModelFinished = true; activity.runOnUiThread(() -> { if (tokensFinished && onnxModelFinished && binding.buttonStart.getVisibility()==View.GONE){ binding.buttonStart.setVisibility(View.VISIBLE); PreferenceHelper preferenceHelper = new PreferenceHelper(activity); preferenceHelper.setCurrentLanguage(lang); LangDB langDB = LangDB.getInstance(activity); langDB.addLanguage(model, lang, country, 0, 1.0f, 1.0f, type); } }); } catch (IOException i) { activity.runOnUiThread(() -> Toast.makeText(activity, activity.getResources().getString(R.string.error_download), Toast.LENGTH_SHORT).show()); onnxModelFile.delete(); Log.w("TTS Engine", activity.getResources().getString(R.string.error_download), i); } }); thread.start(); } File tokensFile = new File(activity.getExternalFilesDir(null) + "/" + lang + country + "/" + tokens); if (tokensFile.exists()) tokensFile.delete(); if (!tokensFile.exists()) { tokensFinished = false; Log.d("TTS Engine", "tokens file does not exist"); Thread thread = new Thread(() -> { try { URL url = new URL(tokensUrl); Log.d("TTS Engine", "Download tokens file"); URLConnection ucon = url.openConnection(); ucon.setReadTimeout(5000); ucon.setConnectTimeout(10000); tokensSize = ucon.getContentLength(); InputStream is = ucon.getInputStream(); BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5); File tempTokensFile = new File(activity.getExternalFilesDir(null)+ "/" + lang + country + "/" + "tokens.tmp"); if (tempTokensFile.exists()) tempTokensFile.delete(); FileOutputStream outStream = new FileOutputStream(tempTokensFile); byte[] buff = new byte[5 * 1024]; int len; while ((len = inStream.read(buff)) != -1) { outStream.write(buff, 0, len); if (tempTokensFile.exists()) tokensDownloadSize = tempTokensFile.length(); activity.runOnUiThread(() -> { binding.downloadSize.setText((tokensDownloadSize + onnxModelDownloadSize)/1024/1024 + " MB / " + (onnxModelSize + tokensSize)/1024/1024 + " MB"); }); } outStream.flush(); outStream.close(); inStream.close(); if (!tempTokensFile.exists()) { throw new IOException(); } tempTokensFile.renameTo(tokensFile); tokensFinished = true; activity.runOnUiThread(() -> { if (tokensFinished && onnxModelFinished && binding.buttonStart.getVisibility()==View.GONE){ binding.buttonStart.setVisibility(View.VISIBLE); PreferenceHelper preferenceHelper = new PreferenceHelper(activity); preferenceHelper.setCurrentLanguage(lang); LangDB langDB = LangDB.getInstance(activity); langDB.addLanguage(model, lang, country, 0, 1.0f, 1.0f, type); } }); } catch (IOException i) { activity.runOnUiThread(() -> Toast.makeText(activity, activity.getResources().getString(R.string.error_download), Toast.LENGTH_SHORT).show()); tokensFile.delete(); Log.w("TTS Engine", activity.getResources().getString(R.string.error_download), i); } }); thread.start(); } } } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/GetSampleText.kt ================================================ package com.k2fsa.sherpa.onnx.tts.engine import android.app.Activity import android.content.Intent import android.os.Bundle import android.speech.tts.TextToSpeech fun getSampleText(lang: String): String { var text = "" when (lang) { "ara" -> { text = "هذا هو محرك تحويل النص إلى كلام باستخدام الجيل القادم من كالدي" } "ben" -> { text = "এটি একটি টেক্সট-টু-স্পীচ ইঞ্জিন যা পরবর্তী প্রজন্মের কালডি ব্যবহার করে" } "bul" -> { text = "Това е машина за преобразуване на текст в реч, използваща Kaldi от следващо поколение" } "cat" -> { text = "Aquest és un motor de text a veu que utilitza Kaldi de nova generació" } "cym" -> { text = "Peiriant testun-i-lais yw hwn sy'n defnyddio Kaldi'r genhedlaeth nesaf" } "ces" -> { text = "Toto je převodník textu na řeč využívající novou generaci kaldi" } "dan" -> { text = "Dette er en tekst til tale-motor, der bruger næste generation af kaldi" } "deu" -> { text = "Dies ist eine Sprachausgabe, die Kaldi der nächsten Generation verwendet" } "ell" -> { text = "Αυτή είναι μια μηχανή κειμένου σε ομιλία που χρησιμοποιεί kaldi επόμενης γενιάς" } "eng" -> { text = "This is a text-to-speech engine using next generation Kaldi" } "est" -> { text = "See on teksti kõneks muutmise mootor, mis kasutab järgmise põlvkonna Kaldi" } "fin" -> { text = "Tämä on tekstistä puheeksi -moottori, joka käyttää seuraavan sukupolven kaldia" } "fra" -> { text = "Il s'agit d'un moteur de synthèse vocale utilisant Kaldi de nouvelle génération" } "gle" -> { text = "Is inneall téacs-go-hurlabhra é seo a úsáideann Kaldi den chéad ghlúin eile" } "hrv" -> { text = "Ovo je mehanizam za pretvaranje teksta u govor koji koristi Kaldi sljedeće generacije" } "hin" -> { text = "यह एक अगली पीढ़ी के काल्डी एप्लिकेशन है, जो लिखित शब्दों और वाक्यांशों को बोली मे परिवर्तित करता है" } "hun" -> { text = "Ez egy szövegfelolvasó motor a következő generációs kaldi használatával" } "isl" -> { text = "Þetta er texta í tal vél sem notar næstu kynslóð kaldi" } "ita" -> { text = "Questo è un motore di sintesi vocale che utilizza kaldi di nuova generazione" } "kat" -> { text = "ეს არის ტექსტიდან მეტყველების ძრავა შემდეგი თაობის კალდის გამოყენებით" } "kaz" -> { text = "Бұл келесі буын kaldi көмегімен мәтіннен сөйлеуге арналған қозғалтқыш" } "mlt" -> { text = "Din hija magna text-to-speech li tuża Kaldi tal-ġenerazzjoni li jmiss" } "lav" -> { text = "Šis ir teksta pārvēršanas runā dzinējs, kas izmanto nākamās paaudzes Kaldi" } "lit" -> { text = "Tai teksto į kalbą variklis, kuriame naudojamas naujos kartos Kaldi" } "ltz" -> { text = "Dëst ass en Text-zu-Speech-Motor mat der nächster Generatioun Kaldi" } "nep" -> { text = "यो अर्को पुस्ता काल्डी प्रयोग गरेर स्पीच इन्जिनको पाठ हो" } "nld" -> { text = "Dit is een tekst-naar-spraak-engine die gebruik maakt van Kaldi van de volgende generatie" } "nor" -> { text = "Dette er en tekst til tale-motor som bruker neste generasjons kaldi" } "pol" -> { text = "Jest to silnik syntezatora mowy wykorzystujący Kaldi nowej generacji" } "por" -> { text = "Este é um mecanismo de conversão de texto em fala usando Kaldi de próxima geração" } "ron" -> { text = "Acesta este un motor text to speech care folosește generația următoare de kadi" } "rus" -> { text = "Это движок преобразования текста в речь, использующий Kaldi следующего поколения." } "slk" -> { text = "Toto je nástroj na prevod textu na reč využívajúci kaldi novej generácie" } "slv" -> { text = "To je mehanizem za pretvorbo besedila v govor, ki uporablja Kaldi naslednje generacije" } "spa" -> { text = "Este es un motor de texto a voz que utiliza kaldi de próxima generación." } "srp" -> { text = "Ово је механизам за претварање текста у говор који користи калди следеће генерације" } "swa" -> { text = "Haya ni maandishi kwa injini ya hotuba kwa kutumia kizazi kijacho kaldi" } "swe" -> { text = "Detta är en text till tal-motor som använder nästa generations kaldi" } "tur" -> { text = "Bu, yeni nesil kaldi'yi kullanan bir metinden konuşmaya motorudur" } "ukr" -> { text = "Це механізм перетворення тексту на мовлення, який використовує kaldi нового покоління" } "vie" -> { text = "Đây là công cụ chuyển văn bản thành giọng nói sử dụng kaldi thế hệ tiếp theo" } "zho", "cmn" -> { text = "使用新一代卡尔迪的语音合成引擎" } } return text } class GetSampleText : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) var result = TextToSpeech.LANG_AVAILABLE val text: String = getSampleText(TtsEngine.lang ?: "") if (text.isEmpty()) { result = TextToSpeech.LANG_NOT_SUPPORTED } val intent = Intent().apply { if (result == TextToSpeech.LANG_AVAILABLE) { putExtra(TextToSpeech.Engine.EXTRA_SAMPLE_TEXT, text) } else { putExtra("sampleText", text) } } setResult(result, intent) finish() } } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/GithubStar.java ================================================ package com.k2fsa.sherpa.onnx.tts.engine; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import androidx.preference.PreferenceManager; public class GithubStar { public static void setAskForStar(boolean askForStar, Context context) { SharedPreferences prefManager = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = prefManager.edit(); editor.putBoolean("askForStar", askForStar); editor.apply(); } public static boolean shouldShowStarDialog(Context context) { SharedPreferences prefManager = PreferenceManager.getDefaultSharedPreferences(context); int versionCode = prefManager.getInt("versionCode", 0); boolean askForStar = prefManager.getBoolean("askForStar", true); if (prefManager.contains("versionCode") && BuildConfig.VERSION_CODE > versionCode && askForStar) { //not at first start, only after upgrade and only if use has not yet given a star or has declined SharedPreferences.Editor editor = prefManager.edit(); editor.putInt("versionCode", BuildConfig.VERSION_CODE); editor.apply(); return true; } else { SharedPreferences.Editor editor = prefManager.edit(); editor.putInt("versionCode", BuildConfig.VERSION_CODE); editor.apply(); return false; } } public static void starDialog(Context context, String url) { SharedPreferences prefManager = PreferenceManager.getDefaultSharedPreferences(context); if (prefManager.getBoolean("askForStar", true)) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); alertDialogBuilder.setMessage(R.string.dialog_StarOnGitHub); alertDialogBuilder.setPositiveButton(context.getString(android.R.string.ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); setAskForStar(false, context); } }); alertDialogBuilder.setNegativeButton(context.getString(android.R.string.no), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { setAskForStar(false, context); } }); alertDialogBuilder.setNeutralButton(context.getString(R.string.dialog_Later_button), null); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } } } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/InstallVoiceData.kt ================================================ package com.k2fsa.sherpa.onnx.tts.engine import android.app.Activity import android.os.Bundle import android.view.Window class InstallVoiceData : Activity() { override fun onCreate(savedInstanceState: Bundle?) { requestWindowFeature(Window.FEATURE_NO_TITLE) super.onCreate(savedInstanceState) } } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/LangDB.java ================================================ package com.k2fsa.sherpa.onnx.tts.engine; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; import java.util.List; public class LangDB extends SQLiteOpenHelper { // Database name and table columns private static final String DB_NAME = "Languages.db"; private static final int DATABASE_VERSION = 2; public static final String TABLE_NAME = "Languages"; private static final String COLUMN_ID = "ID"; private static final String COLUMN_NAME = "ModelName"; private static final String COLUMN_LANG = "Language"; private static final String COLUMN_COUNTRY = "Country"; private static final String COLUMN_SID = "SpeakerID"; private static final String COLUMN_SPEED = "Speed"; private static final String COLUMN_TYPE = "ModelType"; private static final String COLUMN_VOLUME = "Volume"; private static LangDB instance = null; private final Context mContext; public LangDB(Context context) { super(context, DB_NAME, null, DATABASE_VERSION); mContext = context.getApplicationContext(); //mContext = context creates memory leak } @Override public void onCreate(SQLiteDatabase db) { // Create the table for bird observations with all columns and their data types. String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "+TABLE_NAME+" (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME + " TEXT," + COLUMN_LANG + " TEXT," + COLUMN_COUNTRY + " TEXT," + COLUMN_SID + " INTEGER," + COLUMN_SPEED + " FLOAT," + COLUMN_TYPE + " TEXT," + COLUMN_VOLUME + " FLOAT);"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { PreferenceHelper preferenceHelper = new PreferenceHelper(mContext); switch(oldVersion) { case 1: db.execSQL("ALTER TABLE "+TABLE_NAME+" ADD COLUMN "+ COLUMN_VOLUME +" REAL DEFAULT " + preferenceHelper.getVolume()); // we want both updates, so no break statement here... } } public synchronized void addLanguage(String name, String lang, String country, int sid, float speed, float volume, String type) { // Insert a new row into the table with all columns and their values from parameters. SQLiteDatabase db = getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(COLUMN_NAME, name); cv.put(COLUMN_LANG, lang); cv.put(COLUMN_COUNTRY, country); cv.put(COLUMN_SID, sid); cv.put(COLUMN_SPEED, speed); cv.put(COLUMN_TYPE, type); cv.put(COLUMN_VOLUME, volume); db.insert(TABLE_NAME, null, cv); // Insert the row into the table with all columns and their values from parameters. } public synchronized void clearAllEntries() { SQLiteDatabase db = getWritableDatabase(); String CLEAR_TABLE = "DELETE FROM "+ TABLE_NAME; db.execSQL(CLEAR_TABLE); // Delete all rows in the table, effectively clearing it out. } public synchronized List getAllInstalledLanguages() { SQLiteDatabase db = this.getReadableDatabase(); String SELECT_ALL = "SELECT * FROM "+ TABLE_NAME; Cursor cursor = db.rawQuery(SELECT_ALL, null); // Execute the query to select all rows from the table and store them in a cursor object for further processing. List languages = new ArrayList<>(); if (cursor.moveToFirst()) { do { Language language = new Language(); language.setId(cursor.getInt(0)); language.setName(cursor.getString(1)); language.setLang(cursor.getString(2)); language.setCountry(cursor.getString(3)); language.setSid(cursor.getInt(4)); language.setSpeed(cursor.getFloat(5)); language.setType(cursor.getString(6)); language.setVolume(cursor.getFloat(7)); languages.add(language); } while (cursor.moveToNext()); } cursor.close(); return languages; } public synchronized void updateLang(String lang, int sid, float speed, float volume) { SQLiteDatabase database = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_SID, sid); values.put(COLUMN_SPEED, speed); values.put(COLUMN_VOLUME, volume); database.update(TABLE_NAME, values, COLUMN_LANG + " = ?", new String[]{lang}); database.close(); } public static LangDB getInstance(Context context) { if (instance == null && context != null) { instance = new LangDB(context.getApplicationContext()); } return instance; } public void removeLang(String language) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, COLUMN_LANG + " = ?", new String[]{language}); db.close(); } } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/Language.java ================================================ package com.k2fsa.sherpa.onnx.tts.engine; public class Language { private int id; private String name; private String lang; private String country; private int sid; private float speed; private float volume; private String type; public Language() {} public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setLang(String lang) {this.lang = lang;} public String getLang() {return lang;} public void setCountry(String country) {this.country = country;} public String getCountry() {return country;} public void setSid(int sid) {this.sid = sid;} public int getSid() {return sid;} public void setSpeed(float speed) {this.speed = speed;} public float getSpeed() {return speed;} public void setType(String type) {this.type = type;} public String getType() {return type;} public void setVolume(float volume) {this.volume = volume;} public float getVolume() {return this.volume;} } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/MainActivity.kt ================================================ @file:OptIn(ExperimentalMaterial3Api::class) package com.k2fsa.sherpa.onnx.tts.engine import android.content.Intent import android.media.AudioAttributes import android.media.AudioFormat import android.media.AudioManager import android.media.AudioTrack import android.net.Uri import android.os.Bundle import android.util.Log import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowDropDown import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Checkbox import androidx.compose.material3.CheckboxDefaults import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExposedDropdownMenuBox import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Slider import androidx.compose.material3.SliderDefaults import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.launch import org.woheller69.freeDroidWarn.FreeDroidWarn import java.io.File const val TAG = "sherpa-onnx-tts-engine" class MainActivity : ComponentActivity() { private lateinit var track: AudioTrack private var stopped: Boolean = false private var samplesChannel = Channel() private lateinit var preferenceHelper: PreferenceHelper private lateinit var langDB: LangDB override fun onPause() { super.onPause() samplesChannel.close() } override fun onResume() { //Reset speed in case it has been changed by TtsService val db = LangDB.getInstance(this) val allLanguages = db.allInstalledLanguages val currentLanguage = allLanguages.first { it.lang == TtsEngine.lang } TtsEngine.speed.value = currentLanguage.speed super.onResume() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) preferenceHelper = PreferenceHelper(this) langDB = LangDB.getInstance(this) Migrate.renameModelFolder(this) //Rename model folder if "old" structure if (!preferenceHelper.getCurrentLanguage().equals("")) { TtsEngine.createTts(this, preferenceHelper.getCurrentLanguage()!!) initAudioTrack() setupDisplay(langDB, preferenceHelper) ThemeUtil.setStatusBarAppearance(this) FreeDroidWarn.showWarningOnUpgrade(this, BuildConfig.VERSION_CODE) if (GithubStar.shouldShowStarDialog(this)) GithubStar.starDialog( this, "https://github.com/woheller69/ttsengine" ) } else { val intent = Intent(this, ManageLanguagesActivity::class.java) startActivity(intent) finish() } } private fun restart() { val intent = Intent(this, MainActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) startActivity(intent) finish() } @OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) private fun setupDisplay( langDB: LangDB, preferenceHelper: PreferenceHelper ) { setContent { Surface( modifier = Modifier.fillMaxSize(), ) { Scaffold( topBar = { TopAppBar(title = { Text("SherpaTTS") }, actions = { IconButton( onClick = { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse("https://github.com/woheller69/ttsengine") ) ) }, colors = IconButtonDefaults.iconButtonColors( contentColor = colorResource( R.color.primaryDark ) ) ) { Icon(Icons.Filled.Info, contentDescription = "Info") } } ) }, floatingActionButton = { FloatingActionButton( onClick = { intent = Intent() intent.setAction("com.android.settings.TTS_SETTINGS") intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) this.startActivity(intent) finish() } ) { Icon(Icons.Filled.Settings, contentDescription = "TTS Settings") } }) { Box(modifier = Modifier.padding(it)) { var sampleText by remember { mutableStateOf(getSampleText(TtsEngine.lang ?: "")) } val numLanguages = langDB.allInstalledLanguages.size val allLanguages = langDB.allInstalledLanguages var currentLanguage = allLanguages.indexOfFirst { it.lang == preferenceHelper.getCurrentLanguage()!! } val numSpeakers = TtsEngine.tts!!.numSpeakers() LazyColumn( // ✅ LazyColumn replaces Column modifier = Modifier .fillMaxSize() .padding(16.dp) ) { item { Text( getString(R.string.speed) + " " + String.format( "%.1f", TtsEngine.speed.value ) ) } item { Slider( value = TtsEngine.speed.value, onValueChange = { TtsEngine.speed.value = it }, onValueChangeFinished = { langDB.updateLang( TtsEngine.lang, TtsEngine.speakerId.value, TtsEngine.speed.value, TtsEngine.volume.value ) }, valueRange = 0.2F..3.0F, modifier = Modifier.fillMaxWidth(), colors = SliderDefaults.colors( thumbColor = colorResource(R.color.primaryDark), activeTrackColor = colorResource(R.color.primaryDark) ) ) } item { Row( verticalAlignment = Alignment.CenterVertically, ) { var applySystemSpeed by remember { mutableStateOf( preferenceHelper.applySystemSpeed() ) } Checkbox( checked = applySystemSpeed, onCheckedChange = { isChecked -> preferenceHelper.setApplySystemSpeed(isChecked) applySystemSpeed = isChecked }, colors = CheckboxDefaults.colors( checkedColor = colorResource(R.color.primaryDark) ) ) Text( getString(R.string.apply_system_speed) ) } } item { Spacer(modifier = Modifier.height(10.dp)) } item { Row( verticalAlignment = Alignment.CenterVertically, ) { var stripSSML by remember { mutableStateOf( preferenceHelper.getStripSSML() ) } Checkbox( checked = stripSSML, onCheckedChange = { isChecked -> preferenceHelper.setStripSSML(isChecked) stripSSML = isChecked }, colors = CheckboxDefaults.colors( checkedColor = colorResource(R.color.primaryDark) ) ) Text( getString(R.string.strip_ssml) ) } } item { Spacer(modifier = Modifier.height(10.dp)) } item { Box(modifier = Modifier.fillMaxWidth()) { var expanded by remember { mutableStateOf(false) } ExposedDropdownMenuBox( expanded = expanded, onExpandedChange = { expanded = it } ) { val keyboardController = LocalSoftwareKeyboardController.current var displayText = allLanguages[currentLanguage].lang if (allLanguages[currentLanguage].name.isNotEmpty()) displayText = "$displayText (${allLanguages[currentLanguage].name})" OutlinedTextField( value = displayText, onValueChange = {}, readOnly = true, label = { Text(getString(R.string.language_id)) }, modifier = Modifier .fillMaxWidth() .menuAnchor() .onFocusChanged { focusState -> if (focusState.isFocused) { expanded = true keyboardController?.hide() } }, trailingIcon = { Icon( Icons.Default.ArrowDropDown, contentDescription = "Dropdown" ) } ) ExposedDropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { val langList = (0 until numLanguages).toList() langList.forEach { langId -> var dropdownText = allLanguages[langId].lang if (allLanguages[langId].name.isNotEmpty()) dropdownText = "$dropdownText (${allLanguages[langId].name})" DropdownMenuItem( text = { Text(dropdownText) }, onClick = { currentLanguage = langId preferenceHelper.setCurrentLanguage( allLanguages[langId].lang ) expanded = false restart() } ) } } } } } if (numSpeakers > 1) { item { Box(modifier = Modifier.fillMaxWidth()) { var expanded by remember { mutableStateOf(false) } val speakerList = (0 until numSpeakers).toList() var selectedSpeaker by remember { mutableStateOf(TtsEngine.speakerId) } val keyboardController = LocalSoftwareKeyboardController.current ExposedDropdownMenuBox( expanded = expanded, onExpandedChange = { expanded = it } ) { OutlinedTextField( value = selectedSpeaker.toString(), onValueChange = {}, readOnly = true, label = { Text(getString(R.string.speaker_id) + " " + "(0-${numSpeakers - 1})") }, modifier = Modifier .fillMaxWidth() .menuAnchor() .onFocusChanged { focusState -> if (focusState.isFocused) { expanded = true keyboardController?.hide() } }, trailingIcon = { Icon( Icons.Default.ArrowDropDown, contentDescription = "Dropdown" ) } ) ExposedDropdownMenu( expanded = expanded, onDismissRequest = { expanded = false } ) { speakerList.forEach { speakerId -> DropdownMenuItem( text = { Text(speakerId.toString()) }, onClick = { selectedSpeaker.value = speakerId TtsEngine.speakerId.value = speakerId langDB.updateLang( TtsEngine.lang, TtsEngine.speakerId.value, TtsEngine.speed.value, TtsEngine.volume.value ) expanded = false stopped = true } ) } } } } } } item { Row { Button( modifier = Modifier.padding(5.dp), colors = ButtonDefaults.buttonColors( containerColor = colorResource(R.color.primaryDark), contentColor = colorResource(R.color.white) ), onClick = { val intent = Intent( applicationContext, ManageLanguagesActivity::class.java ) startActivity(intent) }) { Image( painter = painterResource(id = R.drawable.ic_add_24dp), contentDescription = stringResource(id = R.string.add_language) ) } Button( modifier = Modifier.padding(5.dp), colors = ButtonDefaults.buttonColors( containerColor = colorResource(R.color.primaryDark), contentColor = colorResource(R.color.white) ), onClick = { deleteLang(preferenceHelper.getCurrentLanguage()) }) { Image( painter = painterResource(id = R.drawable.ic_delete_24dp), contentDescription = stringResource(id = R.string.delete_language) ) } } } item { OutlinedTextField( value = sampleText, onValueChange = { sampleText = it }, label = { Text(getString(R.string.input)) }, maxLines = 10, modifier = Modifier .fillMaxWidth() .padding(bottom = 16.dp) .wrapContentHeight(), singleLine = false ) } item { Text( getString(R.string.volume) + " " + String.format( "%.1f", TtsEngine.volume.value ) ) } item { Slider( value = TtsEngine.volume.value, onValueChange = { TtsEngine.volume.value = it }, onValueChangeFinished = { langDB.updateLang( TtsEngine.lang, TtsEngine.speakerId.value, TtsEngine.speed.value, TtsEngine.volume.value ) }, valueRange = 0.2F..5.0F, modifier = Modifier.fillMaxWidth(), colors = SliderDefaults.colors( thumbColor = colorResource(R.color.primaryDark), activeTrackColor = colorResource(R.color.primaryDark) ) ) } item { Row { Button( enabled = true, modifier = Modifier.padding(5.dp), colors = ButtonDefaults.buttonColors( containerColor = colorResource(R.color.primaryDark), contentColor = colorResource(R.color.white) ), onClick = { if (sampleText.isBlank() || sampleText.isEmpty()) { Toast.makeText( applicationContext, getString(R.string.input), Toast.LENGTH_SHORT ).show() } else { stopped = false track.pause() track.flush() track.play() samplesChannel = Channel() CoroutineScope(Dispatchers.IO).launch { for (samples in samplesChannel) { for (i in samples.indices) { samples[i] *= TtsEngine.volume.value } track.write( samples, 0, samples.size, AudioTrack.WRITE_BLOCKING ) } } if (preferenceHelper.getStripSSML()) sampleText = TtsEngine.stripSsmlTags(sampleText) CoroutineScope(Dispatchers.Default).launch { TtsEngine.tts!!.generateWithCallback( text = sampleText, sid = TtsEngine.speakerId.value, speed = TtsEngine.speed.value, callback = ::callback, ) }.start() } }) { Image( painter = painterResource(id = R.drawable.ic_play_24dp), contentDescription = stringResource(id = R.string.play) ) } Button( modifier = Modifier.padding(5.dp), colors = ButtonDefaults.buttonColors( containerColor = colorResource(R.color.primaryDark), contentColor = colorResource(R.color.white) ), onClick = { stopped = true track.pause() track.flush() }) { Image( painter = painterResource(id = R.drawable.ic_stop_24dp), contentDescription = stringResource(id = R.string.stop) ) } } } } } } } } } private fun deleteLang(currentLanguage: String?) { // Clear current TTS instance TtsEngine.tts = null // Remove from internal cache TtsEngine.removeLanguageFromCache(currentLanguage!!) val country: String val allLanguages = langDB.allInstalledLanguages country = allLanguages.first { it.lang == currentLanguage }.country val subdirectoryName = currentLanguage + country val subdirectory = File(getExternalFilesDir(null), subdirectoryName) if (subdirectory.exists() && subdirectory.isDirectory) { val files = subdirectory.listFiles() files?.forEach { file -> if (file.isFile) { file.delete() } } subdirectory.delete() langDB.removeLang(currentLanguage) if (langDB.allInstalledLanguages.isEmpty()) preferenceHelper.setCurrentLanguage("") else preferenceHelper.setCurrentLanguage(langDB.allInstalledLanguages[0].lang) } restart() } override fun onDestroy() { if (this::track.isInitialized) track.release() super.onDestroy() } // this function is called from C++ @OptIn(ExperimentalCoroutinesApi::class) private fun callback(samples: FloatArray): Int { if (!stopped) { val samplesCopy = samples.copyOf() CoroutineScope(Dispatchers.IO).launch { if (!samplesChannel.isClosedForSend) samplesChannel.send(samplesCopy) } return 1 } else { track.stop() Log.i(TAG, " return 0") return 0 } } private fun initAudioTrack() { val sampleRate = TtsEngine.tts!!.sampleRate() val bufLength = AudioTrack.getMinBufferSize( sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_FLOAT ) Log.i(TAG, "sampleRate: $sampleRate, buffLength: $bufLength") val attr = AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .setUsage(AudioAttributes.USAGE_MEDIA) .build() val format = AudioFormat.Builder() .setEncoding(AudioFormat.ENCODING_PCM_FLOAT) .setChannelMask(AudioFormat.CHANNEL_OUT_MONO) .setSampleRate(sampleRate) .build() track = AudioTrack( attr, format, bufLength, AudioTrack.MODE_STREAM, AudioManager.AUDIO_SESSION_ID_GENERATE ) track.play() } } ================================================ FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/ManageLanguagesActivity.kt ================================================ package com.k2fsa.sherpa.onnx.tts.engine import android.content.Intent import android.net.Uri import android.os.Bundle import android.view.View import android.widget.ArrayAdapter import android.widget.Button import android.widget.EditText import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.k2fsa.sherpa.onnx.tts.engine.databinding.ActivityManageLanguagesBinding import java.io.File import java.io.FileOutputStream import java.util.Locale class ManageLanguagesActivity : AppCompatActivity() { private var binding: ActivityManageLanguagesBinding? = null // URIs for selected files private var modelFileUri: Uri? = null private var tokensFileUri: Uri? = null // Store lang_code for later use private var langCodeForInstallation: String = "" private var langCode: String = "" private var modelName: String = "" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityManageLanguagesBinding.inflate(layoutInflater) setContentView(binding!!.root) ThemeUtil.setStatusBarAppearance(this) val allPiperModels: Array = resources.getStringArray(R.array.piper_models) val allCoquiModels: Array = resources.getStringArray(R.array.coqui_models) val db = LangDB.getInstance(this) val installedLanguages = db.allInstalledLanguages val installedLangCodes = installedLanguages.map { it.lang } val showPiperModels = mutableListOf() for(model in allPiperModels){ val twoLetterCode: String = model.split("_").get(0) val lang = Locale(twoLetterCode).isO3Language if (!installedLangCodes.contains(lang)) showPiperModels.add(model) } val showCoquiModels = mutableListOf() for(model in allCoquiModels){ val twoLetterCode: String = model.split("_").get(0) val lang = Locale(twoLetterCode).isO3Language if (!installedLangCodes.contains(lang)) showCoquiModels.add(model) } val piperAdapter = ArrayAdapter(this, R.layout.list_item, R.id.text_view, showPiperModels) val coquiAdapter = ArrayAdapter(this, R.layout.list_item, R.id.text_view, showCoquiModels) binding!!.piperModelList.adapter = piperAdapter binding!!.piperModelList.setOnItemClickListener { parent, view, position, id -> val model = showPiperModels.get(position) val twoLetterCode = model.substring(0, 2) val country = model.substring(3, 5) val lang = Locale(twoLetterCode).isO3Language val type = "vits-piper" binding!!.piperModelList.visibility = View.GONE binding!!.coquiModelList.visibility = View.GONE binding!!.buttonTestVoices.visibility = View.GONE binding!!.piperHeader.visibility = View.GONE binding!!.coquiHeader.visibility = View.GONE binding!!.downloadSize.setText("") Downloader.downloadModels(this, binding, model, lang, country, type) } binding!!.coquiModelList.adapter = coquiAdapter binding!!.coquiModelList.setOnItemClickListener { parent, view, position, id -> val model = showCoquiModels.get(position) val twoLetterCode = model.substring(0, 2) val country = "" val lang = Locale(twoLetterCode).isO3Language val type = "vits-coqui" binding!!.piperModelList.visibility = View.GONE binding!!.coquiModelList.visibility = View.GONE binding!!.buttonTestVoices.visibility = View.GONE binding!!.piperHeader.visibility = View.GONE binding!!.coquiHeader.visibility = View.GONE binding!!.downloadSize.setText("") Downloader.downloadModels(this, binding, model, lang, country, type) } } fun startMain(view: View) { val intent = Intent(this, MainActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) startActivity(intent) finishAffinity() } fun testVoices(view: View) {startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://huggingface.co/spaces/k2-fsa/text-to-speech/")))} fun installFromSD(view: View) { sdInstall() } fun sdInstall() { val dialogView = layoutInflater.inflate(R.layout.dialog_install_custom_model, null) val langInput = dialogView.findViewById(R.id.editTextLangCode) val modelInput = dialogView.findViewById(R.id.editTextModelName) val selectModelBtn = dialogView.findViewById