Full Code of woheller69/ttsEngine for AI

master 65b3f1a4a96b cached
455 files
297.8 KB
116.0k tokens
39 symbols
1 requests
Download .txt
Showing preview only (384K chars total). Download the full file or copy to clipboard to get everything.
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. <https://fsf.org/>
 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.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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 <https://www.gnu.org/licenses/>.

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:

    <program>  Copyright (C) <year>  <name of author>
    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
<https://www.gnu.org/licenses/>.

  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
<https://www.gnu.org/licenses/why-not-lgpl.html>.


================================================
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
<pre>Send a coffee to 
woheller69@t-online.de 
<a href= "https://www.paypal.com/signin"><img  align="left" src="https://www.paypalobjects.com/webstatic/de_DE/i/de-pp-logo-150px.png"></a>

  
Or via this link (with fees)
<a href="https://www.paypal.com/donate?hosted_button_id=XVXQ54LBLZ4AA"><img  align="left" src="https://img.shields.io/badge/Donate%20with%20Debit%20or%20Credit%20Card-002991?style=plastic"></a></pre>
# 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/).

<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/01.png" width="150"/> <img src="fastlane/metadata/android/en-US/images/phoneScreenshots/02.png" width="150"/>

[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="75">](https://f-droid.org/de/packages/org.woheller69.ttsengine/) [<img src="https://www.openapk.net/images/openapk-badge.png" height="75">]( 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** |
|:---:|:---:|:--:|
| [<img src="https://github.com/woheller69/weather/blob/main/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.weather/) | [<img src="https://github.com/woheller69/spritpreise/blob/main/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.spritpreise/) | [<img src="https://github.com/woheller69/eggtimer/blob/main/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.eggtimer/) |
| **Bubble** | **hEARtest** | **GPS Cockpit** |
| [<img src="https://github.com/woheller69/Level/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.level/) | [<img src="https://github.com/woheller69/audiometry/blob/new/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.audiometry/) | [<img src="https://github.com/woheller69/gpscockpit/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.gpscockpit/) |
| **Audio Analyzer** | **LavSeeker** | **TimeLapseCam** |
| [<img src="https://github.com/woheller69/audio-analyzer-for-android/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.audio_analyzer_for_android/) |[<img src="https://github.com/woheller69/lavatories/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.lavatories/) | [<img src="https://github.com/woheller69/TimeLapseCamera/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.TimeLapseCam/) |
| **Arity** | **Cirrus** | **solXpect** |
| [<img src="https://github.com/woheller69/arity/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.arity/) | [<img src="https://github.com/woheller69/omweather/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.omweather/) | [<img src="https://github.com/woheller69/solXpect/blob/main/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.solxpect/) |
| **gptAssist** | **dumpSeeker** | **huggingAssist** |
| [<img src="https://github.com/woheller69/gptassist/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.gptassist/) | [<img src="https://github.com/woheller69/dumpseeker/blob/main/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.dumpseeker/) | [<img src="https://github.com/woheller69/huggingassist/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.hugassist/) |
| **FREE Browser** | **whoBIRD** | **PeakOrama** |
| [<img src="https://github.com/woheller69/browser/blob/newmaster/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.browser/) | [<img src="https://github.com/woheller69/whoBIRD/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.whobird/) | [<img src="https://github.com/woheller69/PeakOrama/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.PeakOrama/) |
| **Whisper** | **Seamless** | **SherpaTTS** |
| [<img src="https://github.com/woheller69/whisperIME/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.whisper/) | [<img src="https://github.com/woheller69/seamless/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](https://f-droid.org/packages/org.woheller69.seemless/) | [<img src="https://github.com/woheller69/ttsengine/blob/master/fastlane/metadata/android/en-US/images/icon.png" width="50">](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
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="false"
        android:fullBackupContent="false"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.SherpaOnnxTtsEngine">
        <activity
            android:name=".GetSampleText"
            android:exported="true"
            android:theme="@style/Theme.SherpaOnnxTtsEngine">
            <intent-filter>
                <action android:name="android.speech.tts.engine.GET_SAMPLE_TEXT" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".CheckVoiceData"
            android:exported="true">
            <intent-filter>
                <action android:name="android.speech.tts.engine.CHECK_TTS_DATA" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".InstallVoiceData"
            android:exported="true">
            <intent-filter>
                <action android:name="android.speech.tts.engine.INSTALL_TTS_DATA" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <service
            android:name=".TtsService"
            android:enabled="true"
            android:exported="true"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.TTS_SERVICE" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <meta-data
                android:name="android.speech.tts"
                android:resource="@xml/tts_engine" />
        </service>

        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.SherpaOnnxTtsEngine">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.speech.tts.engine.CONFIGURE_ENGINE" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ManageLanguagesActivity"
            android:theme="@style/Theme.SherpaOnnxTtsEngine"
            android:screenOrientation="portrait"
            android:exported="true">
        </activity>
    </application>

</manifest>


================================================
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 <logan@liberit.ca>
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 <valdis.vitolins@odo.lv>
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 <valdis.vitolins@odo.lv>
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 <christodeklerk@gmail.com>
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 <msclrhd@gmail.com>
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 <msclrhd@gmail.com>
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 <msclrhd@gmail.com>
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 <msclrhd@gmail.com>
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 <msclrhd@gmail.com>
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 <msclrhd@gmail.com>
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 <richard.calvi@gmail.com>
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 <eashah67@gmail.com>


================================================
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 <eashah67@gmail.com>
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 <shadyar81@gmail.com>
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 <shadyar81@gmail.com>
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 <m.conrad.202@gmail.com>
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 <codeofdusk@gmail.com> and Elizabeth Resendiz <e.r.resendiz7@gmail.com>
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 <llajta2012@gmail.com>
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 <yoxem.tem98@nctu.edu.tw>
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 <contact@ronaldaug.ml>
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 <valdis.vitolins@odo.lv>
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 <andm1zyk@proton.me>
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<Language> 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<Language> 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;}

    publ
Download .txt
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
Download .txt
SYMBOL INDEX (39 symbols across 6 files)

FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/Downloader.java
  class Downloader (line 19) | @SuppressWarnings("ResultOfMethodCallIgnored")
    method downloadModels (line 30) | public static void downloadModels(final Activity activity, ActivityMan...

FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/GithubStar.java
  class GithubStar (line 11) | public class GithubStar {
    method setAskForStar (line 12) | public static void setAskForStar(boolean askForStar, Context context) {
    method shouldShowStarDialog (line 19) | public static boolean shouldShowStarDialog(Context context) {
    method starDialog (line 37) | public static void starDialog(Context context, String url) {

FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/LangDB.java
  class LangDB (line 12) | public class LangDB extends SQLiteOpenHelper {
    method LangDB (line 29) | public LangDB(Context context) {
    method onCreate (line 34) | @Override
    method onUpgrade (line 49) | @Override
    method addLanguage (line 59) | public synchronized void addLanguage(String name, String lang, String ...
    method clearAllEntries (line 74) | public synchronized void clearAllEntries() {
    method getAllInstalledLanguages (line 81) | public synchronized List<Language> getAllInstalledLanguages() {
    method updateLang (line 106) | public synchronized void updateLang(String lang, int sid, float speed,...
    method getInstance (line 117) | public static LangDB getInstance(Context context) {
    method removeLang (line 124) | public void removeLang(String language) {

FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/Language.java
  class Language (line 3) | public class Language {
    method Language (line 13) | public Language() {}
    method getId (line 15) | public int getId() {
    method setId (line 19) | public void setId(int id) {
    method getName (line 23) | public String getName() {
    method setName (line 27) | public void setName(String name) {
    method setLang (line 31) | public void setLang(String lang) {this.lang = lang;}
    method getLang (line 33) | public String getLang() {return lang;}
    method setCountry (line 35) | public void setCountry(String country) {this.country = country;}
    method getCountry (line 37) | public String getCountry() {return country;}
    method setSid (line 39) | public void setSid(int sid) {this.sid = sid;}
    method getSid (line 41) | public int getSid() {return sid;}
    method setSpeed (line 43) | public void setSpeed(float speed) {this.speed = speed;}
    method getSpeed (line 45) | public float getSpeed() {return speed;}
    method setType (line 47) | public void setType(String type) {this.type = type;}
    method getType (line 49) | public String getType() {return type;}
    method setVolume (line 51) | public void setVolume(float volume) {this.volume = volume;}
    method getVolume (line 53) | public float getVolume() {return this.volume;}

FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/Migrate.java
  class Migrate (line 11) | public class Migrate {
    method renameModelFolder (line 14) | public static void renameModelFolder(Context context){
    method readLanguageFromFile (line 29) | public static String[] readLanguageFromFile(Context context) {

FILE: app/src/main/java/com/k2fsa/sherpa/onnx/tts/engine/ThemeUtil.java
  class ThemeUtil (line 7) | public class ThemeUtil {
    method setStatusBarAppearance (line 8) | public static void setStatusBarAppearance(Activity activity){
Condensed preview — 455 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (344K chars).
[
  {
    "path": ".gitignore",
    "chars": 251,
    "preview": "*.iml\n.gradle\n/local.properties\n./idea\n/.idea/caches\n/.idea/libraries\n/.idea/modules.xml\n/.idea/workspace.xml\n/.idea/nav"
  },
  {
    "path": "LICENSE",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 8085,
    "preview": " ```\nGoogle has announced that, starting in 2026/2027, all apps on certified Android devices\nwill require the developer "
  },
  {
    "path": "app/.gitignore",
    "chars": 37,
    "preview": "/build\n/release/output-metadata.json\n"
  },
  {
    "path": "app/build.gradle.kts",
    "chars": 2146,
    "preview": "plugins {\n    id(\"com.android.application\")\n    id(\"org.jetbrains.kotlin.android\")\n}\n\nandroid {\n    namespace = \"com.k2f"
  },
  {
    "path": "app/proguard-rules.pro",
    "chars": 750,
    "preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "chars": 3079,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:to"
  },
  {
    "path": "app/src/main/assets/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/aav/vi",
    "chars": 111,
    "preview": "name Vietnamese (Northern)\nlanguage vi\n\nwords 1 2\npitch 95 175\n\n\ntone 100 225 800 100 2000 50 5400 75 8000 200\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/aav/vi-VN-x-central",
    "chars": 143,
    "preview": "name Vietnamese (Central)\nlanguage vi-vn-x-central\nphonemes vi-hue\ndictrules 1\n\nwords 1\npitch 82 118   //80 118\n voicing"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/aav/vi-VN-x-south",
    "chars": 142,
    "preview": "name Vietnamese (Southern)\nlanguage vi-vn-x-south\nphonemes vi-sgn\ndictrules 2\n\nwords 1\npitch 82 118   //80 118\n voicing "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/eo",
    "chars": 41,
    "preview": "name Esperanto\nlanguage eo\n\napostrophe 2\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/ia",
    "chars": 29,
    "preview": "name Interlingua\nlanguage ia\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/io",
    "chars": 50,
    "preview": "name Ido\nlanguage io\nphonemes eo\nstatus testing\n \n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/jbo",
    "chars": 69,
    "preview": "name Lojban\nlanguage jbo\n\nspeed 80   // speed adjustment, percentage\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/lfn",
    "chars": 127,
    "preview": "name Lingua Franca Nova\nlanguage lfn\n\nphonemes base2\nl_unpronouncable 0\nnumbers 2 3\n\nstressLength  150 140 180 180 0 0 2"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/piqd",
    "chars": 56,
    "preview": "name Klingon\nlanguage piqd\nstatus testing\nstressRule 3\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/py",
    "chars": 140,
    "preview": "name Pyash\nlanguage py\nmaintainer Logan Streondj <logan@liberit.ca>\nstatus testing\n\nspeed 80   // speed adjustment, perc"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/qdb",
    "chars": 57,
    "preview": "name Lang Belta\nlanguage qdb\n\nnumbers 4 3\n\nreplace 1 t ?\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/qya",
    "chars": 173,
    "preview": "name Quenya\nlanguage qya\nstressRule 2\n// rule=penultimate, with qya_rules for light penultimate syllables to move primar"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/art/sjn",
    "chars": 175,
    "preview": "name Sindarin\nlanguage sjn\nstressRule 2\n// rule=penultimate, with sjn_rules for light penultimate syllables to move prim"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/azc/nci",
    "chars": 114,
    "preview": "name Nahuatl (Classical)\nlanguage nci\n\nintonation 3\nstressRule 2\nstressLength  190  190  200  200  0  0  220  240\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/bat/lt",
    "chars": 28,
    "preview": "name Lithuanian\nlanguage lt\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/bat/ltg",
    "chars": 312,
    "preview": "name Latgalian\nlanguage ltg\nmaintainer Valdis Vitolins <valdis.vitolins@odo.lv>\nstatus testing\nphonemes lv\ndictionary lv"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/bat/lv",
    "chars": 229,
    "preview": "name Latvian\nlanguage lv\nmaintainer Valdis Vitolins <valdis.vitolins@odo.lv>\nstatus mature\nwords 0 2\npitch 67 123\ntone 6"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/bnt/sw",
    "chars": 41,
    "preview": "name Swahili\nlanguage sw\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/bnt/tn",
    "chars": 42,
    "preview": "name Setswana\nlanguage tn\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ccs/ka",
    "chars": 124,
    "preview": "name Georgian\nlanguage ka\nlowercaseSentence\t// A period followed by a lowercase letter is considered a sentence (mkhedru"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/cel/cy",
    "chars": 37,
    "preview": "name Welsh\nlanguage cy\n\nintonation 4\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/cel/ga",
    "chars": 66,
    "preview": "name Gaelic (Irish)\nlanguage ga\n\ndictrules 1  // fix for eclipsis\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/cel/gd",
    "chars": 51,
    "preview": "name Gaelic (Scottish)\nlanguage gd\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/cus/om",
    "chars": 39,
    "preview": "name Oromo\nlanguage om\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/dra/kn",
    "chars": 55,
    "preview": "name Kannada\nlanguage kn\n\nintonation 2\n//consonants 80\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/dra/ml",
    "chars": 57,
    "preview": "name Malayalam\nlanguage ml\n\nintonation 2\n//consonants 80\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/dra/ta",
    "chars": 51,
    "preview": "name Tamil\nlanguage ta\n\nintonation 2\nconsonants 80\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/dra/te",
    "chars": 70,
    "preview": "name Telugu\nlanguage te\n\nstatus testing\n\nintonation 2\n//consonants 80\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/esx/kl",
    "chars": 30,
    "preview": "name Greenlandic\nlanguage kl\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/eu",
    "chars": 54,
    "preview": "name Basque\nlanguage eu\n\nstatus testing\nstressRule 15\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmq/da",
    "chars": 43,
    "preview": "name Danish\nlanguage da\n\ntunes s2 c2 q2 e2\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmq/is",
    "chars": 27,
    "preview": "name Icelandic\nlanguage is\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmq/nb",
    "chars": 86,
    "preview": "name Norwegian Bokmål\nlanguage nb\nlanguage no\nphonemes no\ndictionary no\n\nintonation 4\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmq/sv",
    "chars": 25,
    "preview": "name Swedish\nlanguage sv\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/af",
    "chars": 123,
    "preview": "name Afrikaans\nlanguage af\n\nmaintainer Christo de Klerk <christodeklerk@gmail.com>\nstatus mature\n\nroughness 0\npitch 63 1"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/de",
    "chars": 42,
    "preview": "name German\nlanguage de\ntunes s4 c1 q4 e1\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en",
    "chars": 140,
    "preview": "name English (Great Britain)\nlanguage en-gb  2\nlanguage en 2\n\nmaintainer Reece H. Dunn <msclrhd@gmail.com>\nstatus mature"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en-029",
    "chars": 335,
    "preview": "name English (Caribbean)\nlanguage en-029\nlanguage en 10\n\nmaintainer Reece H. Dunn <msclrhd@gmail.com>\nstatus mature\n\npho"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-scotland",
    "chars": 295,
    "preview": "name English (Scotland)\nlanguage en-gb-scotland\nlanguage en 4\n\nmaintainer Reece H. Dunn <msclrhd@gmail.com>\nstatus matur"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-x-gbclan",
    "chars": 238,
    "preview": "name English (Lancaster)\nlanguage en-gb-x-gbclan\nlanguage en-gb  3\nlanguage en 5\n\nmaintainer Reece H. Dunn <msclrhd@gmai"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-x-gbcwmd",
    "chars": 188,
    "preview": "name English (West Midlands)\nlanguage en-gb-x-gbcwmd\nlanguage en-gb 9\nlanguage en 9\n\nphonemes en-wm\n\nreplace 00 h NULL\nr"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en-GB-x-rp",
    "chars": 249,
    "preview": "name English (Received Pronunciation)\nlanguage en-gb-x-rp\nlanguage en-gb  4\nlanguage en 5\n\nmaintainer Reece H. Dunn <msc"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en-US",
    "chars": 257,
    "preview": "name English (America)\nlanguage en-us 2\nlanguage en 3\n\nmaintainer Reece H. Dunn <msclrhd@gmail.com>\nstatus mature\n\nphone"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/en-US-nyc",
    "chars": 271,
    "preview": "name English (America, New York City)\nlanguage en-us-nyc\n\nmaintainer Richard Calvi <richard.calvi@gmail.com>\nstatus test"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/lb",
    "chars": 31,
    "preview": "name Luxembourgish\nlanguage lb\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/gmw/nl",
    "chars": 23,
    "preview": "name Dutch\nlanguage nl\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/grk/el",
    "chars": 23,
    "preview": "name Greek\nlanguage el\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/grk/grc",
    "chars": 99,
    "preview": "name Greek (Ancient)\nlanguage grc\n\nstressLength 170 170  190 190  0 0  230 240\ndictrules 1\nwords 3\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/as",
    "chars": 42,
    "preview": "name Assamese\nlanguage as\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/bn",
    "chars": 25,
    "preview": "name Bengali\nlanguage bn\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/bpy",
    "chars": 39,
    "preview": "name Bishnupriya Manipuri\nlanguage bpy\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/gu",
    "chars": 42,
    "preview": "name Gujarati\nlanguage gu\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/hi",
    "chars": 23,
    "preview": "name Hindi\nlanguage hi\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/kok",
    "chars": 26,
    "preview": "name Konkani\nlanguage kok\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/mr",
    "chars": 41,
    "preview": "name Marathi\nlanguage mr\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/ne",
    "chars": 37,
    "preview": "name Nepali\nlanguage ne\n\ndictrules 1\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/or",
    "chars": 39,
    "preview": "name Oriya\nlanguage or\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/pa",
    "chars": 25,
    "preview": "name Punjabi\nlanguage pa\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/sd",
    "chars": 66,
    "preview": "name Sindhi\nlanguage sd\nmaintainer Ejaz Shah <eashah67@gmail.com>\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/si",
    "chars": 55,
    "preview": "name Sinhala\nlanguage si\n\nstatus testing\n\nintonation 2\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/inc/ur",
    "chars": 94,
    "preview": "name Urdu\nlanguage ur\nmaintainer Ejaz Shah <eashah67@gmail.com>\nstatus testing\n\nstressRule 6\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ine/hy",
    "chars": 61,
    "preview": "name Armenian (East Armenia)\nlanguage hy\nlanguage hy-arevela\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ine/hyw",
    "chars": 365,
    "preview": "name Armenian (West Armenia)\nlanguage hyw\nlanguage hy-arevmda\nlanguage hy  8\n\ndictionary hy\ndictrules 1\n\nphonemes hy\n\n//"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ine/sq",
    "chars": 102,
    "preview": "name Albanian\nlanguage sq\n\n// add this line to remove 'ë' at the end of words\n// replace 00  @/  NULL\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ira/fa",
    "chars": 90,
    "preview": "name Persian\nlanguage fa\nmaintainer Shadyar Khodayari <shadyar81@gmail.com>\nstatus mature\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ira/fa-Latn",
    "chars": 269,
    "preview": "name Persian (Pinglish)\n// Sometimes, Farsi speakers write Farsi words using English characters, particularly in Chat an"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ira/ku",
    "chars": 40,
    "preview": "name Kurdish\nlanguage ku\n\n//words 1 48\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/iro/chr",
    "chars": 569,
    "preview": "name Cherokee //https://github.com/espeak-ng/espeak-ng/blob/master/docs/voices.md\nlanguage chr-US-Qaaa-x-west 5\n\nmaintai"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/itc/la",
    "chars": 297,
    "preview": "name Latin\nlanguage la\nstressRule 2 0 2\n// rule=penultimate\n// unstressed_wd1=0\n// unstressed_wd2=2\nstressOpt 0 5 // fla"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/jpx/ja",
    "chars": 52,
    "preview": "name Japanese\nlanguage ja\nphonemes ja\n\nintonation 4\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/ko",
    "chars": 51,
    "preview": "name Korean\nlanguage ko\npitch 80 118\nintonation 2\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/map/haw",
    "chars": 42,
    "preview": "name Hawaiian\nlanguage haw\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/miz/mto",
    "chars": 183,
    "preview": "name Totontepec Mixe\nlanguage mto\n\nmaintainer Bill Dengler <codeofdusk@gmail.com> and Elizabeth Resendiz <e.r.resendiz7@"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/myn/quc",
    "chars": 210,
    "preview": "name K'iche'\nlanguage quc\nstatus testing\nstressRule 3 // stress on final syllable\nstressAmp 8 8 20 15 0 0 25 25  // redu"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/poz/id",
    "chars": 134,
    "preview": "name Indonesian\nlanguage id\n\nstressLength 160 200  180 180  0 0  220 240\nstressAmp    16  18   18  18   0 0  22  21\n\ncon"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/poz/mi",
    "chars": 366,
    "preview": "name Māori\nlanguage mi\nstatus testing\n\n// https://github.com/espeak-ng/espeak-ng/blob/master/docs/voices.md#words\nwords "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/poz/ms",
    "chars": 430,
    "preview": "// Last updated: 14 October 2010, Jason Ong (jason@portalgroove.com)\nname Malay\nlanguage ms\nphonemes id\n\nstressLength 16"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/qu",
    "chars": 88,
    "preview": "name Quechua\nlanguage qu\nstressRule 2 // stress on penultimate syllable\nstatus testing\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/an",
    "chars": 27,
    "preview": "name Aragonese\nlanguage an\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/ca",
    "chars": 25,
    "preview": "name Catalan\nlanguage ca\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/es",
    "chars": 63,
    "preview": "name Spanish (Spain)\nlanguage es\ndictrules 1\ntunes s6 c6 q6 e6\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/es-419",
    "chars": 167,
    "preview": "name Spanish (Latin America)\nlanguage es-419\nlanguage es-mx 6\n\nphonemes es-la\ndictrules 2\nintonation 2\nstressLength 170 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/fr",
    "chars": 79,
    "preview": "name French (France)\nlanguage fr-fr\nlanguage fr\n\ndictrules 1\ntunes s3 c3 q3 e3\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/fr-BE",
    "chars": 84,
    "preview": "name French (Belgium)\nlanguage fr-be\nlanguage fr 8\n\ndictrules 2\ntunes s3 c3 q3 e3\n\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/fr-CH",
    "chars": 86,
    "preview": "name French (Switzerland)\nlanguage fr-ch\nlanguage fr 8\n\ndictrules 3\ntunes s3 c3 q3 e3\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/ht",
    "chars": 140,
    "preview": "name Haitian Creole\nlanguage ht\nstatus testing\nmaintainer  // TODO somebody should take responsibility for this\n\nphoneme"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/it",
    "chars": 109,
    "preview": "name Italian\nlanguage it\n\nmaintainer Christian Leo M <llajta2012@gmail.com>\nstatus mature\n\ntunes s4 c4 q4 e4\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/pap",
    "chars": 62,
    "preview": "name Papiamento\nlanguage pap\n\nstatus testing\n\nphonemes base2\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/pt",
    "chars": 95,
    "preview": "name Portuguese (Portugal)\nlanguage pt\nlanguage pt-pt\nphonemes pt-pt\n\ndictrules 1\nintonation 2\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/pt-BR",
    "chars": 109,
    "preview": "name Portuguese (Brazil)\nlanguage pt-br\nlanguage pt 6\n\ndictrules 2\nstressLength 200 115 230 230 0 0 250 270\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/roa/ro",
    "chars": 26,
    "preview": "name Romanian\nlanguage ro\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sai/gn",
    "chars": 47,
    "preview": "name Guarani\nlanguage gn\ndictrules 1\nwords 0 1\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sem/am",
    "chars": 41,
    "preview": "name Amharic\nlanguage am\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sem/ar",
    "chars": 50,
    "preview": "name Arabic\nlanguage ar\nphonemes ar\n\nstressRule 4\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sem/he",
    "chars": 40,
    "preview": "name Hebrew\nlanguage he\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sem/mt",
    "chars": 41,
    "preview": "name Maltese\nlanguage mt\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sit/cmn",
    "chars": 592,
    "preview": "name Chinese (Mandarin, latin as English)\nlanguage cmn\nlanguage zh-cmn\nlanguage zh\n\nphonemes cmn\ndictionary cmn\nwords 1\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sit/cmn-Latn-pinyin",
    "chars": 161,
    "preview": "name Chinese (Mandarin, latin as Pinyin)\nlanguage cmn-latn-pinyin\nlanguage zh-cmn\nlanguage zh\n\nphonemes cmn\ndictionary c"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sit/hak",
    "chars": 128,
    "preview": "name Hakka Chinese\nlanguage hak\nmaintainer Chen Chien-ting <yoxem.tem98@nctu.edu.tw>\nstatus testing\nphonemes hak\ndiction"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sit/my",
    "chars": 56,
    "preview": "name Myanmar (Burmese)\nmaintainer Min Maung\nlanguage my\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sit/yue",
    "chars": 194,
    "preview": "name Chinese (Cantonese)\nlanguage yue\nlanguage zh-yue\nlanguage zh 8\n\nphonemes yue\ndictionary yue\n\n// interpret English l"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/sit/yue-Latn-jyutping",
    "chars": 213,
    "preview": "name Chinese (Cantonese, latin as Jyutping)\nlanguage yue\nlanguage zh-yue\nlanguage zh 8\n\nphonemes yue\ndictionary yue\n\n// "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/tai/shn",
    "chars": 92,
    "preview": "name Shan (Tai Yai)\nlanguage shn\nmaintainer ronaldaug <contact@ronaldaug.ml>\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/tai/th",
    "chars": 37,
    "preview": "name Thai\nlanguage th\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/az",
    "chars": 45,
    "preview": "name Azerbaijani\nlanguage az\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/ba",
    "chars": 25,
    "preview": "name Bashkir\nlanguage ba\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/cv",
    "chars": 40,
    "preview": "name Chuvash\nlanguage cv\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/kk",
    "chars": 40,
    "preview": "name Kazakh\nlanguage kk\nstatus testing\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/ky",
    "chars": 43,
    "preview": "name Kyrgyz\nlanguage ky\n\ntunes s3 c3 q3 e3\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/nog",
    "chars": 39,
    "preview": "name Nogai\nlanguage nog\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/tk",
    "chars": 25,
    "preview": "name Turkmen\nlanguage tk\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/tr",
    "chars": 25,
    "preview": "name Turkish\nlanguage tr\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/tt",
    "chars": 23,
    "preview": "name Tatar\nlanguage tt\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/ug",
    "chars": 24,
    "preview": "name Uyghur\nlanguage ug\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/trk/uz",
    "chars": 39,
    "preview": "name Uzbek\nlanguage uz\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/urj/et",
    "chars": 237,
    "preview": "name Estonian\nlanguage et\n\nstressAmp 18 16 22 22 20 22 22 22\nstressLength 150 180 200 200 0 0 210 250\nstressOpt 1 2 4 6 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/urj/fi",
    "chars": 237,
    "preview": "name Finnish\nlanguage fi\n\n\nstressAmp 18 16 22 22 20 22 22 22\nstressLength 150 180 200 200 0 0 210 250\nstressOpt 1 2 4 6 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/urj/hu",
    "chars": 73,
    "preview": "name Hungarian\nlanguage hu\nbrackets 0\nbracketsAnnounced 0\npitch 81 117\n\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/urj/smj",
    "chars": 45,
    "preview": "name Lule Saami\nlanguage smj\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zle/be",
    "chars": 52,
    "preview": "name Belarusian\nlanguage be\ndict_min  2000\nspeed 95\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zle/ru",
    "chars": 57,
    "preview": "name Russian\nlanguage ru\nreplace 03 a a#\ndict_min  20000\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zle/ru-LV",
    "chars": 280,
    "preview": "name Russian (Latvia)\nlanguage ru-lv 2\n\nmaintainer Valdis Vitolins <valdis.vitolins@odo.lv>\nstatus testing\n\nphonemes ru-"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zle/ru-cl",
    "chars": 91,
    "preview": "name Russian (Classic)\nlanguage ru-cl\nreplace 03 a a#\ndict_min  20000\nspeed 95\ndictrules 3\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zle/uk",
    "chars": 97,
    "preview": "name Ukrainian\nlanguage uk\n\nmaintainer Andrij Mizyk <andm1zyk@proton.me>\nstatus testing\n\nspeed 80"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zls/bg",
    "chars": 111,
    "preview": "name Bulgarian\nlanguage bg\n\nstressAmp 13 12 17 17 20 22 22 21 \nstressLength 180 170  200 200  200 200  210 220\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zls/bs",
    "chars": 230,
    "preview": "name Bosnian\nlanguage bs\nphonemes hr\n\npitch 81 120\nformant 0 100 100 100\nformant 1  97  97 100\nformant 2  97  97 100\nfor"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zls/hr",
    "chars": 262,
    "preview": "name Croatian\nlanguage hr\nlanguage hbs\n\n// attributes towards !variant3\npitch 81 120\nformant 0 100 100 100\nformant 1  97"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zls/mk",
    "chars": 28,
    "preview": "name Macedonian\nlanguage mk\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zls/sl",
    "chars": 43,
    "preview": "name Slovenian\nlanguage sl\n\nstatus testing\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zls/sr",
    "chars": 250,
    "preview": "name Serbian\nlanguage sr\n\n// attributes towards !variant3 pitch 80 120\nformant 0 100 100 100\nformant 1  97  97 100\nforma"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zlw/cs",
    "chars": 23,
    "preview": "name Czech\nlanguage cs\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zlw/pl",
    "chars": 38,
    "preview": "name Polish\nlanguage pl\n\nintonation 2\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/lang/zlw/sk",
    "chars": 24,
    "preview": "name Slovak\nlanguage sk\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/phondata-manifest",
    "chars": 21821,
    "preview": "# This file lists the type of data that has been compiled into the\n# phondata file\n#\n# The first character of a line ind"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Alex",
    "chars": 128,
    "preview": "language variant\nname Alex\n\nvoicing 70\npitch 105 115\nflutter 0\n\nformant 1 110 115 100\nformant 2 100 110 100\nformant 3 10"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Alicia",
    "chars": 453,
    "preview": "language variant\nname Alicia\ngender female\npitch 180 275\necho 40 50\nformant 0 115 115 110\nformant 1 130 160 120\nformant "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Andrea",
    "chars": 357,
    "preview": "language variant \nname Andrea\ngender female \n\npitch 200 265\nroughness 0\n\nformant 0 100  100 100\nformant 1 110  100 80\nfo"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Andy",
    "chars": 301,
    "preview": "language variant\nname Andy\ngender Male\n\npitch 85 110\n\nflutter 0\nformant 0 80 80 80 80\nformant 1 100 100 100 120\nformant "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Annie",
    "chars": 298,
    "preview": "language variant\nname Annie\ngender female\npitch 120 280\n\nformant 0 105 125 120\nformant 1 120 140 120\nformant 2 120 150 1"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/AnxiousAndy",
    "chars": 342,
    "preview": "language variant\nname anxiousAndy\ngender Male\n\npitch 115 110\n\nflutter 0\nformant 0 80 80 80 80\nformant 1 100 100 100 120\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Demonic",
    "chars": 3726,
    "preview": "##Ten en cuenta que los 2 signos de número en este archivo tienen explicaciones de las comfiguraciones que puede aplicar"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Denis",
    "chars": 286,
    "preview": "language variant\nname Denis\ngender male 35\npitch  80 115\nflutter 0\nroughness 0\n\n\nformant 0 100 160 160\nformant 1 95 95 9"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Diogo",
    "chars": 379,
    "preview": "language variant\nname Diogo\ngender male 25\npitch  82 122\necho 0 0\nflutter 0\nroughness 0\nstressAmp 20 18  20 20  20 22  2"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Gene",
    "chars": 264,
    "preview": "language variant\nname Gene\n\npitch  80 110\n\nformant 0 120 120 120\nformant 1 90 100 110\nformant 2 100 100 95\nformant 3 90 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Gene2",
    "chars": 266,
    "preview": "language variant\nname Gene2\n\npitch  100 130\n\nformant 0 120 120 120\nformant 1 90 100 110\nformant 2 100 100 95\nformant 3 9"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Henrique",
    "chars": 381,
    "preview": "language variant\nname Henrique\ngender male 25\npitch  70 130\necho 0 0\nflutter 0\nroughness 0\nstressAmp 20 18  20 20  20 22"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Hugo",
    "chars": 378,
    "preview": "language variant\nname Hugo\ngender male 25\npitch  70 130\necho 0 0\nflutter 0\nroughness 0\nstressAmp 20 18  20 20  20 22  22"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Jacky",
    "chars": 250,
    "preview": "language variant\nname Jacky\n\npitch  85 130\n\nformant 0 150 155 100\nformant 1 90 155 70\nformant 2 95 70 64\nformant 3 15 20"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Lee",
    "chars": 318,
    "preview": "language variant\nname Lee\ngender Male\n\n#echo 230 30\npitch 85 110\n\nflutter 0\nformant 0 80 80 80 80\nformant 1 80 80 100 10"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Marco",
    "chars": 444,
    "preview": "language variant\nname Marco\ngender male 30\nintonation 1\npitch  100 152\necho 50 80\nflutter 2\nroughness 0\nstressAmp 25 25 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Mario",
    "chars": 253,
    "preview": "language variant\nname Mario\n\npitch  75 125\n\nformant 0 100 111 95\nformant 1 100 111 60\nformant 2 95 90 55\nformant 3 100 5"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Michael",
    "chars": 253,
    "preview": "language variant\nname Michael\n\npitch  75 125\n\nformant 0 105 111 95\nformant 1 85 111 60\nformant 2 95 90 55\nformant 3 59 5"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Mike",
    "chars": 112,
    "preview": "language variant\nname Mike\nvoicing 70\nformant 1 96 97 100\nformant 2 96 97 100\nformant 5 95 103 100\npitch 67 107\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Mr serious",
    "chars": 3143,
    "preview": "##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settin"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Nguyen",
    "chars": 280,
    "preview": "language variant\nname Nguyen\n\npitch 95 175\n\nformant 0 100 125 100\nformant 1 96 90 80\nformant 2 97 70 90\nformant 3 97 60 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Reed",
    "chars": 202,
    "preview": "language variant\nname Reed\nklatt 6\nconsonants 85 85\nvoicing 130\nbreath 45\n\npitch 85 135\n\nformant 1 72 100 90 90\nformant "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/RicishayMax",
    "chars": 233,
    "preview": "language variant\nname RicishayMax\necho 100 10000\n\nformant 0 90 120 100\nformant 1 100 100 75\nformant 2 100 100 75\nformant"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/RicishayMax2",
    "chars": 435,
    "preview": "language variant\nname RicishayMax2\necho 150 500\n\nformant 0 90 120 100\nformant 1 100 100 75\nformant 2 100 100 75\nformant "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/RicishayMax3",
    "chars": 435,
    "preview": "language variant\nname RicishayMax3\necho 200 500\n\nformant 0 90 120 100\nformant 1 100 100 75\nformant 2 100 100 75\nformant "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Storm",
    "chars": 397,
    "preview": "language variant\nlanguage en-us\nname Storm\ngender male\nformant 0 100 100 100\nformant 1 95 95 95\nformant 2 95 95 95\nforma"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/Tweaky",
    "chars": 3139,
    "preview": "##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settin"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/UniRobot",
    "chars": 398,
    "preview": "language variant\nname UniversalRobot\ngender male\nklatt 4\npitch  100 160\necho 10 10000\nformant 1 75 120 135\nformant 2 90 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/adam",
    "chars": 75,
    "preview": "language variant\nname Adam\nklatt 6\nconsonants 85 85\n\nformant 1 100 100 130\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/anika",
    "chars": 493,
    "preview": "language variant\nname anika\ngender female\npitch 200 300\nflutter 6\nstressAmp 20 18  20 20  20 22  22 22\n\nroughness 0\n\nfor"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/anikaRobot",
    "chars": 512,
    "preview": "language variant\nname anikaRobot\ngender female\npitch 200 300\nflutter 1\nstressAmp 20 18  20 20  20 22  22 22\necho 10 1000"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/announcer",
    "chars": 300,
    "preview": "name Half-LifeAnnouncementSystem\nlanguage variant\npitch 37 83\nklatt 4\n\nformant 1 88 100 100 0\nformant 2 96 100 100 0\nfor"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/antonio",
    "chars": 381,
    "preview": "language variant \nname Antonio\ngender male\n\npitch 82 128\nroughness 0\n\nformant 0 100  150 90\nformant 1 90  130 90\nformant"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/aunty",
    "chars": 339,
    "preview": "language variant\nname Auntie\ngender female\npitch 204 176\nflutter 12\n\nformant 0 88 85 154\nformant 1 115 80 160 -20\nforman"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/belinda",
    "chars": 340,
    "preview": "language variant\nname Belinda\ngender female\n\npitch 200 247  \nflutter 3\n\nformant 0 88 85 154\nformant 1 135 58 169 -30\nfor"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/benjamin",
    "chars": 201,
    "preview": "language variant\nname Benjamin\nklatt 6\nconsonants 70 70\n\nformant 1 101 100 130\nformant 2 102 100 100\nformant 3 100 100 1"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/boris",
    "chars": 209,
    "preview": "language variant\nname Boris\n\nformant 0 47 120 100\nformant 1 100 90 75\nformant 2 104 100 75\nformant 3 57 80 75\nformant 4 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/caleb",
    "chars": 57,
    "preview": "language variant\nname Caleb\nklatt 6\nbreath 100\nvoicing 0\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/croak",
    "chars": 93,
    "preview": "language variant\nname croak\ngender male 70\n\npitch 85 117\nflutter 20\n\nformant 0 100 80 110\n\n\n\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/david",
    "chars": 112,
    "preview": "language variant\nname David\nklatt 6\npitch 62 89\n\nformant 1 75 100 100\nformant 2 85 100 100\nformant 3 85 100 100\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/ed",
    "chars": 287,
    "preview": "language variant\nname Ed\n\npitch 90 145\n\nformant 0 110 120 200 5\nformant 1 102 100 80\nformant 2 101 120 100\nformant 3 100"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/edward",
    "chars": 151,
    "preview": "language variant\nname Edward\nklatt 5\nvoicing 100\nconsonants 70 80\n\nformant 1 92 100 130\nformant 2 103 100 80\nformant 3 1"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/edward2",
    "chars": 152,
    "preview": "language variant\nname Edward2\nklatt 6\nvoicing 100\nconsonants 70 80\n\nformant 1 92 100 130\nformant 2 103 100 80\nformant 3 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/f1",
    "chars": 324,
    "preview": "language variant\nname female1\ngender female 70\n\npitch 140 200\nflutter 8\nroughness 4\nformant 0 115  80 150\nformant 1 120 "
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/f2",
    "chars": 357,
    "preview": "language variant\nname female2\ngender female\n\npitch 142 220\nroughness 3\n\nformant 0 105  80 150\nformant 1 110  80 160\nform"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/f3",
    "chars": 375,
    "preview": "language variant\nname female3\ngender female\n\npitch 140 240\nformant 0 105  80 150\nformant 1 120  75 150 -50\nformant 2 135"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/f4",
    "chars": 350,
    "preview": "language variant\nname female4\ngender female\n\necho 130 15\npitch 142 200\nformant 0 120  80 150\nformant 1 115  80 160 -20\nf"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/f5",
    "chars": 432,
    "preview": "language variant \nname female5\ngender female \n\npitch 160 228\nroughness 0\n\nformant 0 105  80 150 \nformant 1 110  80 160 \n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/fast",
    "chars": 149,
    "preview": "language variant\nname fast_test\n\n// Try decreasing these values to make eSpeak's fastest speed faster.\n// This is curren"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/grandma",
    "chars": 263,
    "preview": "language variant\n\nname grandma\ngender female 90\npitch 120 230\n\nflutter 20\nformant 0 105 150 150\nformant 1 100 80 100\nfor"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/grandpa",
    "chars": 256,
    "preview": "language variant\nname grandpa\npitch 80 120\nflutter 20\nformant 0 100 100 100\nformant 1 100 100 100\nformant 2 100 100 100\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/gustave",
    "chars": 253,
    "preview": "language variant\nname Gustave\n\npitch  80 123\n\nformant 0 85 141 135\nformant 1 77 131 45\nformant 2 92 70 55\nformant 3 59 5"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/ian",
    "chars": 3117,
    "preview": "##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settin"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/iven",
    "chars": 261,
    "preview": "language variant\nname Iven\npitch  74 118\nformant 0 52 133 88\nformant 1 87 82 76\nformant 2 94 56 42\nformant 3 93 52 130\nf"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/iven2",
    "chars": 279,
    "preview": "language variant\nname Iven2\npitch  74 118\nformant 0 52 133 88\nformant 1 87 82 76\nformant 2 94 56 42\nformant 3 93 52 130\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/iven3",
    "chars": 262,
    "preview": "language variant\nname Iven3\npitch  74 118\nformant 0 52 133 88\nformant 1 87 82 76\nformant 2 94 56 42\nformant 3 93 52 130\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/iven4",
    "chars": 261,
    "preview": "language variant\nname Iven4\npitch  74 118\nformant 0 52 133 88\nformant 1 87 82 76\nformant 2 94 56 42\nformant 3 93 52 130\n"
  },
  {
    "path": "app/src/main/assets/espeak-ng-data/voices/!v/john",
    "chars": 3136,
    "preview": "##Please note the 2 number signs, or pound signs in this file are for comments to help you to understand what the settin"
  }
]

// ... and 255 more files (download for full content)

About this extraction

This page contains the full source code of the woheller69/ttsEngine GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 455 files (297.8 KB), approximately 116.0k tokens, and a symbol index with 39 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!