From 07f3c00d9bbe6eff9dac70a5c58ef814cc78cfb1 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Fri, 6 May 2022 15:47:01 -0400 Subject: [PATCH] Centralize documentation --- README.md | 332 ++++-------------------------------- img/server_screenshot.jpg | Bin 58977 -> 59762 bytes mimic3_http/README.md | 52 +----- mimic3_tts/README.md | 343 +------------------------------------- opentts_abc/README.md | 3 + 5 files changed, 47 insertions(+), 683 deletions(-) create mode 100644 opentts_abc/README.md diff --git a/README.md b/README.md index 5ee8587..7fd9e73 100644 --- a/README.md +++ b/README.md @@ -5,99 +5,32 @@ A fast and local neural text to speech system developed by [Mycroft](https://mycroft.ai/) for the [Mark II](https://mycroft.ai/product/mark-ii/). * [Available voices](https://github.com/MycroftAI/mimic3-voices) -* [How does it work?](mimic3_tts/#architecture) +* [Documentation](https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/coming-soon-mimic-3) +* [How does it work?](https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/coming-soon-mimic-3#how-it-works) -## Use Cases - -* [Mycroft TTS plugin](#mycroft-tts-plugin) - * `mycroft-say 'Hello world.'` -* [Web server](#web-server-and-client) - * `curl -X POST --data 'Hello world.' --output - localhost:59125/api/tts | aplay` - * Drop-in [replacement for MaryTTS](#marytts-compatibility) -* [Command-line tool](#command-line-tools) - * `mimic3 'Hello world.' | aplay` -* [Voice for screen reader](mimic3_tts/#speech-dispatcher) - * `spd-say 'Hello world.'` - - -## Dependencies - -Mimic 3 requires: - -* Python 3.7 or higher -* The [Onnx runtime](https://onnxruntime.ai/) -* [gruut](https://github.com/rhasspy/gruut) or [eSpeak-ng](https://github.com/espeak-ng/espeak-ng) or [epitran](https://github.com/dmort27/epitran/) (depending on the voice) - - -## Installation - - -### eSpeak - -Some voices depend on [eSpeak-ng](https://github.com/espeak-ng/espeak-ng), specifically `libespeak-ng.so`. For those voices, make sure that libespeak-ng is installed with: - -``` sh -sudo apt-get install libespeak-ng1 -``` - -On 32-bit ARM platforms (a.k.a. `armv7l` or `armhf`), you will also need some extra libraries: - -``` sh -sudo apt-get install libatomic1 libgomp1 libatlas-base-dev -``` - +## Quickstart ### Mycroft TTS Plugin -Install the plugin: - ``` sh +# Install system packages +sudo apt-get install libespeak-ng1 + +# Install plugin mycroft-pip install mycroft-plugin-tts-mimic3[all] -``` -Enable the plugin in your [mycroft.conf](https://mycroft-ai.gitbook.io/docs/using-mycroft-ai/customizations/mycroft-conf) file: - -``` sh +# Activate plugin mycroft-config set tts.module mimic3_tts_plug + +# Start mycroft +mycroft-start all ``` -or you can manually add the following to `mycroft.conf` with `mycroft-config edit user`: - -``` json -"tts": { - "module": "mimic3_tts_plug" -} -``` +See [documentation](https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/coming-soon-mimic-3#tts-plugin-for-mycroft-ai) for more details. -See the [plugin's documentation](https://github.com/MycroftAI/plugin-tts-mimic3) for more options. - - -### Docker image - -A pre-built Docker image is available for the following platforms: - -* `linux/amd64` - * For desktops and laptops (`x86_64` CPUs) -* `linux/arm64` - * For Raspberry 3/4 and Zero 2 with [64-bit Pi OS](https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/) -* `linux/arm/v7` - * For Raspberry Pi 1/2/3/4 and Zero 2 with 32-bit Pi OS - -Install/update with: - -``` sh -docker pull mycroftai/mimic3 -``` - -Once installed, check out the following scripts for running: - -* [`mimic3`](docker/mimic3) -* [`mimic3-server`](docker/mimic3-server) -* [`mimic3-download`](docker/mimic3-download) - -Or you can manually run the web server with: +### Web Server ``` sh docker run \ @@ -107,234 +40,43 @@ docker run \ 'mycroftai/mimic3' ``` -Voices will be automatically downloaded to `${HOME}/.local/share/mycroft/mimic3/voices` - - -### Debian Package - -Grab the Debian package from the [latest release](https://github.com/mycroftAI/mimic3/releases) for your platform: - -* `mycroft-mimic3-tts__amd64.deb` - * For desktops and laptops (`x86_64` CPUs) -* `mycroft-mimic3-tts__arm64.deb` - * For Raspberry 3/4 and Zero 2 with [64-bit Pi OS](https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/) -* `mycroft-mimic3-tts__armhf.deb` - * For Raspberry Pi 1/2/3/4 and Zero 2 with 32-bit Pi OS - -Once downloaded, install the package with (note the `./`): - -``` sh -sudo apt install ./mycroft-mimic3-tts__.deb -``` - -Once installed, the following commands will be available in `/usr/bin`: - -* `mimic3` -* `mimic3-server` -* `mimic3-download` - - -### Using pip - -Install the command-line tool: - -``` sh -pip install mycroft-mimic3-tts[all] -``` - -Once installed, the following commands will be available: - -* `mimic3` -* `mimic3-download` -* `mimic3-server` - -Language support can be selectively installed by replacing `all` with: - -* `de` - German -* `es` - Spanish -* `fa` - Farsi -* `fr` - French -* `it` - Italian -* `nl` - Dutch -* `ru` - Russian -* `sw` - Kiswahili - -Excluding `[..]` entirely will install support for English only. - - -### From Source - -Clone the repository: - -``` sh -git clone https://github.com/MycroftAI/mimic3.git -``` - -Run the install script: - -``` sh -cd mimic3/ -./install.sh -``` - -A virtual environment will be created in `mimic3/.venv` and each of the Python modules will be installed in editiable mode (`pip install -e`). - -Once installed, the following commands will be available in `.venv/bin`: - -* `mimic3` -* `mimic3-server` -* `mimic3-download` - - -## Voice Keys - -Mimic 3 references voices with the format: - -* `_/_` for single speaker voices, and -* `_/_#` for multi-speaker voices - * `` can be a name or number starting at 0 - * Speaker names come from a voice's `speakers.txt` file - -![parts of a mimic 3 voice](img/voice_parts.png) - -For example, the default [Alan Pope](https://popey.me/) voice key is `en_UK/apope_low`. -The [CMU Arctic voice](https://github.com/MycroftAI/mimic3-voices/tree/master/voices/en_US/cmu-arctic_low) contains multiple speakers, with a commonly used voice being `en_US/cmu-arctic_low#slt`. - -Voices are automatically downloaded from [Github](https://github.com/MycroftAI/mimic3-voices) and stored in `${HOME}/.local/share/mycroft/mimic3` (technically `${XDG_DATA_HOME}/mycroft/mimic3`). You can also [manually download them](#downloading-voices). - - -## Running - - -### Command-Line Tools - -The `mimic3` command can be used to synthesize audio on the command line: - -``` sh -mimic3 --voice 'en_UK/apope_low' 'My hovercraft is full of eels.' > hovercraft_eels.wav -``` - -See [voice keys](#voice-keys) for how to reference voices and speakers. - -See `mimic3 --help` or the [CLI documentation](mimic3_tts/) for more details. - - -#### Downloading Voices - -Mimic 3 automatically downloads voices when they're first used, but you can manually download them too with `mimic3-download`. - -For example: - -``` sh -mimic3-download 'en_US/*' -``` - -will download all U.S. English voices to `${HOME}/.local/share/mycroft/mimic3/voices`. - -See `mimic3-download --help` for more options. - - -### Web Server and Client - -Start a web server with `mimic3-server` and visit `http://localhost:59125` to view the web UI. - -To access the server from outside your device, run `mimic3-server --host 0.0.0.0` (see also `--port `). - -![screenshot of web interface](img/server_screenshot.jpg) - -The following endpoints are available: - -* `/api/tts` - * `POST` text or [SSML](#ssml) and receive WAV audio back - * Use `?voice=` to select a different [voice/speaker](#voice-keys) - * Set `Content-Type` to `application/ssml+xml` (or use `?ssml=1`) for [SSML](#ssml) input -* `/api/voices` - * Returns a JSON list of available voices - -An [OpenAPI](https://www.openapis.org/) test page is also available at `http://localhost:59125/openapi` - -See `mimic3-server --help` for the [web server documentation](mimic3_http/) for more details. - - -#### Web Client - -The `mimic3` program provides an interface to the Mimic 3 web server when the `--remote` option is given. - -Assuming you have started `mimic3-server` and can access `http://localhost:59125`, then: - -``` sh -mimic3 --remote --voice 'en_UK/apope_low' 'My hovercraft is full of eels.' > hovercraft_eels.wav -``` - -If your server is somewhere besides `localhost`, use `mimic3 --remote ...` - -See `mimic3 --help` for more options. - - -## CUDA Acceleration - -If you have a GPU with support for CUDA, you can accelerate synthesis with the `--cuda` flag when running `mimic3` or `mimic3-server`. This requires you to install the [onnxruntime-gpu](https://pypi.org/project/onnxruntime-gpu/) Python package. - -Using [nvidia-docker](https://github.com/NVIDIA/nvidia-docker) is highly recommended. See [ Dockerfile.gpu](Dockerfile.gpu) for an example of how to build a compatible container. - - -## MaryTTS Compatibility - -Use the Mimic 3 web server as a drop-in replacement for [MaryTTS](http://mary.dfki.de/), for example with [Home Assistant](https://www.home-assistant.io/integrations/marytts/). - -Make sure to use a Mimic 3 [voice key](#voice-keys) like `en_UK/apope_low` instead of a MaryTTS voice name. - -For Mycroft, you can use this instead of [the plugin](https://github.com/MycroftAI/plugin-tts-mimic3) by running: +Visit [http://localhost:59125](http://localhost:59125) or from another terminal: ``` sh -mycroft-config edit user +curl -X POST --data 'Hello world.' --output - localhost:59125/api/tts | aplay + ``` -and then adding the following: +See [documentation](https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/coming-soon-mimic-3#web-server) for more details. -``` json -"tts": { -"module": "marytts", -"marytts": { - "url": "http://localhost:59125", - "voice": "en_UK/apope_low" -} + +### Command-Line Tool + +``` sh +# Install system packages +sudo apt-get install libespeak-ng1 + +# Create virtual environment +python3 -m venv .venv +source .venv/bin/activate +pip3 install --upgrade pip + +pip3 install mycroft-mimic3-tts[all] ``` +Now you can run: -## SSML - -A [subset of SSML](mimic3_tts/#SSML) (Speech Synthesis Markup Language) is supported. - -For example: - -``` xml - - - - Welcome to the world of speech synthesis. - - - - - - - This is a 2 voice. - - - - +``` sh +mimic3 'Hello world.' | aplay ``` -will speak the two sentences with different voices and a 3 second second pause in between. The second sentence will also have the number "2" pronounced as "second" (ordinal form). +Use `mimic3-server` and `mimic3 --remote ...` for repeated usage (much faster). -SSML `` support varies between voice types: +See [documentation](https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/coming-soon-mimic-3#command-line-interface) for more details. -* [gruut](https://github.com/rhasspy/gruut/#ssml) -* [eSpeak-ng](http://espeak.sourceforge.net/ssml.html) -* [epitran](https://github.com/dmort27/epitran/) voices do not currently support `` -* Character-based voices do not currently support `` + +--- ## License diff --git a/img/server_screenshot.jpg b/img/server_screenshot.jpg index 25226b4534732df0f71a7da9221e11b9cc726fb5..c4c98928a5c4d8dc05757917a011ec4817456021 100644 GIT binary patch literal 59762 zcmeEu1zc52_vofWP+GdBBoB>*bV#Rk9=bzHKv0qH?rud%2|*AA=|)PV1qB2Iq~AU$ z%DvwEecwOcd;j-)-yDX$_RLyq)>^Y>X6-q1_UXIR4*-^&l&lm02PS4XW&k*yB?yr8 zurdb#Sy?6k6#&3|84e!60U>)Z*RaNre|iQ$mWuJ=Hg3K5Zslr8DJ`p@3^0RDz*;%K!U`!NtQ_pD z5D3VN9Rd+x=N4e+q2%Be;DUgE06Y*Fg8~qNH2q+P%laiLc>6Q`-V&%K+;?eU4Z{6^ z(?JS&P!k03stlGR{Ll&+yhpwO5-JJ`3K|+JItCsl#-&RbL^!xt@W_ZM$jOLFNhxVr=_#q1X-G*Kco~`5 zIk>pEDCqfx_#lF;oLmqX6F4+9G>l6agqWCw5GqnC$bUGUz67vQfpj=fS!w_t8x8>* z?z9b{0Odr2c?cXR?Dqr*kAR4TjDm`WehEaV#)4T20Ui+n2?-Gq#P$K}0Yq#h94Zb` zWLye| z$jYgyYiMfS*48mKgPL1dT3Nfey4`X2@btR>;9=mSpx}_0*tqzF#H8euoZP(pg2JNW zl8VZz>YCc;b@i>U+FrkD?|9oeI5a#mI`(dSVs>tRVR32s>0TBhJ7aY7hm=UlMk*GM3aYR*6jGb_)A^xa%V$s>pTF_`XRlney zI1iu`&~nXQ+k~lhrrE!ySipZuv!9Cn(rW_1K!5`~4*?qx0rqa(x@Bqs$1ZvD*zcZ~ z`iyDKDUj*Wyx}idc;qR13h0gPtBwrr!*FK~99l6myX8&w|Kv^5UZ0I@3k*{NJ}GLyA8FoC|(eJqxXL8M%$;8-=!*Y?aK8uiK%`6aYp5K zO$NQ&^RcTck`W}xp41-0N1Lpo>&`DDX5Q<}Cvxd3Wv_~ywnX7AT15a#8r(tY?aTI6?5$=R!w)|@jETa#1L_N$>z z@bOx-W>3%rBlvsycOR$lXFC2L>CccqHT1YhM>m}3V-Pi>*eUQ*2-C1+BJ$`y>nZRl z^c0}cKof=*LvF=KR-FQo3?iRWP64Kr?29)Ay76QIAq;u!IUx+dc`oS4o--37#8xa? z3N{bRB|!IDqxEC5aT1D9oj5!cxRGj-I-UyLZzomXBOdI-Z@Yy?ZvD`}OS5m6JEFDe zX3IuwW^X2PqJ{0@`~!P3H2(Hw{fHL?`(^8%9IYlfadw zr1ZtU5|bSicMCHRdKJmGk&E?4_ysQ$>E2|Ri|$t~+Pp=2I2xud%_HCbr zGA*Z5pyU+D*b3$x`{oqsXWdZrQRRYOEW<`GQD7|v?Dr9DwBAp1vJ+T@ONQMDnwR_Ubw%__TBQsRZLSv)I3s2GPZEuql*k&O2w4q}i;Rf$4;3Lq4L4D* z2pHrFh4oK!J*^pKxKDJnT7JZ$fP3PzA+quC6d>N7!F%99vI?*C-2Um*d|24_L|Ip^ z6@)!@&1te#aZnX%R4638ZFYQxOpzadhog(#sSt&0ebAz>(U(bso={h6VCocT9Uc%_ ze!qS4&2Y0cMXQa4UTgTn(}3&o38vMzvJm+C%Bwx=KOV4elddwA7%sed^v886#(Q?}#cT=9YT3INW-L6F5>|M)e04HayYmBf2W5KooT5 z*vW6fx<_-^Z-K}iTmTIBiT8u<%IxKTdA6ImxrlP?Vz{WL&hrygO_+~pWt+yU3f+@r zp?Zj?auexa$e6LmYR8xYsq_bh2gGiG=Th~TL495A`euCvYTTydK+^fm9_3Tup{&R; zGR-N_jB*NuJn5Z(qr+YOwZ@KlO;BmEzTJ*y_NgKSMGxK&K}W!#+@egBcGUj!vkp_o z%?f-YILZLH_3OhCHsKG{)vF9{9Yu0~V0WXNelnAK3UKzG0<)@0r+{eCDX`IU3e1&C zi+*!pjeI<@dZm~)2btxmc-R+dy~DAr0X4xHBEILHIwIFjq@ubUpT@+QmTdbi;s33@ zwr4kKDhw}CSe*jo%6?ZhTxE{E zjKR5`@oqi?m45SU;pA$C5|>k|xk4vlrI{%`;mWZ49?d5i^8~|zGcqDS$y1=I`Cz2m zz`Al$h6A&0T%q0c>2l=D%QJ?(>E3=$_Ulv-*&6B=@n_7A-piy$zOHbCi^o?_4#1gJ zCGo4_;ipsJv0n1XdRsqr3s=zoHmS@jLcPrZ(bXF}g*=sfy(~{;&{2hLKE!4S+-Voi ze0T$H1o|8ONKGO09wv#n3o-KKi+o#G`UBsb(s27ll`b9qn(;iP=y&NQZOHA}2sERi zaHGGqug#>F6SEZ{C9_QuIhwxh*C*?@G4B^nfS|_qv3YOo6wnE4-qSjhS<|rR6cD-w zxmpB#FN!iV8-y+TGjD7hRqO7(EEY$F6@_- zaGz!(Rh_=B$$hX}JO%3i%%5Y-{LmtfneH961>60wFeBH4lXznXv${%mjwHpK2u{7c za2auMx#y;n`q2~47TWc!8Z3n$A3yK-)*^U9li3#H>eao~{p@jd=gGDWLG-i8#3&zO zQ!q+Oxr0#Bb-;GKa|(>+vK^0n@4~298CDJHH1<_q&X_zLl=88y1I->vlAmfoPJ!v~ z-K9a*;7PB}hKnp^ORv#FO3_;>Rqdq~D&D+A_|8!g!vA%d=#9_KEKHjq^E9T?pqECv zqzhgeDV;;rvg;ey0=-S`vo&%tM=H}!Zd0UN_oG~Q`w+D5U~g|a;$YXkRrQ*B{GkcE z%r)oBBFT^SQN$y~s#6Hpuch^HBrhZqG2bM+NA}QqKz(82SxP=?Lmr-rq->VPg~g$i z`{KyR-lT^9gQ=q>L>|4}$3xPQDrUUJiVW|51_IU<`{#mg#Vk9|pIpO6P1bc%t9#_I zeGnqf<`Z#couVb2vZ7YSpB$x6udOBf)!yhqM&aB6|bidLaB3Wl!n& ztKXYvZ;ETIvOS>PvJIX|_u8#_KU`jFKMY^dakNW$&B{TY7$!V)ozyAKEep-}oF?8b zTM7ej!F4~lL^F1O3?X*w8L3RqWRrrxwr0rNWc^Fejo_(>-f+fd+^-!&cyZ+>mlZo_ zn#=7(VOkk%C)*_{4WqJ`ZYw7~tFJ-lPb|ypU1`J~@{I9UPxH}c!i<5OV7O(dAU z_QkE6SfMiF2$fOJkhX0#6>v>P$!BHAxrc!c{`;997o7qfkd2e)&0E~&rPd-_7!9Yu z6SkvpbzxfhCIaE16TvL7z~-pLI`9IlIvs9HH?Sf#uyRY1D(X0GVa^JmFSr^x7)jN< z+?W{yE*c7wfEGa(*4;O&SEf}mJJb)Q^T7o_RXU#p2Ef5j;w$HPg3s;7eyxdbZB6@P z$&(Df6c=To61<}gd2dQq$k!TnB33YQ#af2}E<@dW@3a0(Q@&-qNP;=`&q*iiB9CPy z0SPKFY-7Xmy>)^&S~KN5#D4(Ba1WIv0SMnw_2l!~y7sSy1CjtZI)2N4w{n215x4TU zXvnwQhf3eJ?w{0^Zxxr2h@6APx9)I1Rgsb;!VAPxiI#%#{qOmIL7rp8k(7%a^Sd}d zB`dz=)Naf!ghWUlkPsq{i_ov)|B=x$3-RSwJR>i3&~oQ>fczCvDU_`IvSai0rFI3+ zHELN441bkK%mg6v2_|6po#2f?TOx6q=BUD@*VpR&*cXl#>{Z%rjWYKhN?)#Xav^Ed z>_GqgptSa=5jRlpfX!v58nFN1g$_1irax^ha3|T##f>G^)0)Uk9jdX6;+!COxvp}H9w%=<{vwR!ABn*cA##u@HsecSc@y-(V6(yGZj>Ags|5y zk8_&sMO9j)VZO7CUA-~H#$DQRm)E;Q$6#g8e1KePYu>I5-=%gVjlyp*Eo<&GgMzF+ z897Q;E<(S$W~-BZvz5ntgC%aJ=4kr;(YszPiTW{Z)cco`+L9MK0h6Xv;JU>L{QG#M zl;`9DVOK=ex$H!DgaoHLLc-`XnAzlMpWHj4a?!y9lFq7OLG2lDRWP9S|HuH^3k+sK z8?y_6_J+SWbhQ8Y)N~~nm+j#no|!6GsugOYBI$G3HobkA4A%?~zy&GNZ>MCM-_S%u zX3|A2q~`=&kP1Y;?Sac~}ktag1wd+vpBcWLrbPgXLaBV5Nz z;7U7Dz8%x_gLxEOnQO)w2u2u@^79$(nQCBs{7Z}rOqGj!tRE~Rm%SDc#I#_kYz&LJ zX}A4y;(_Ua?+p7(43hN@ZL`Z+KdgOJH)A7^UE31~Su8sn1Z1yg!#%2yC zP*zh1J2nqvM>Y;tb~Zpz#KY0p)CTHGX#%ydvKOM>XlSOUv@#Q-*5X!RS8x=ET3X3? zIYZUF6xB_=Y)tvhs6~V+1w8~j>>TZ&uEvxecDD8|0vHqPn}gv$}J#IyhUfaq#o= zv#~?iAP^Q1gT=+u-qqNH#omSHoPz|^#njo#(bdYqo)X5<*u=rjRfrmF|4cBj##GV+ zEcn41c7Mj$#np^W7QEpC6#)_0AnfdXEbI^#2tQ2r?@HM@Dk%J<{7d`U+5N{?a*36s@6!Wad&hcS; z_&@Ps2D7lTb3DU_VV+}|nf}CabaS>nt2Z-cgW5vvz{XubjvPO6LAsyFeH#JkjI3BotvH4oW+>W%!GxDo7aSe-^84cg^wL#%)@TN z&S}oean489-o@3}-V_Ss19E1y0-11|ad4TKnSfMWd>}n1l!JwjkBgs$mxG(#%$%DG z!p*~VPOs!_1-h)U?L~QDe9S;T#-^q`d{AROmdpD0CrRr98P&HR$n29)exHh zwnEfDzm9?V^bdy>kasXOhB@_*?^u3}7cpZCHV|a{d#pd#s98F=+y4{lbDVQpQD;|o z2WJ~4XC)JBsHyAUQ2&l~POl11B`&Vcp0Z|tL;44V?@lEHQaCt!{vc3;I{kobttih% z7TBXOa|ltp7~g@KQU543wKTT3fP%9X=*8dBtp38O%z4bXc_F5tKS3c-7A`Jur1P0V zOj+33&G@*?*tt#kp(f|_E)M3d?#9kgQ47$+!M*|g`|PVSN`^CcU_8fjw}gViu&{Fp zu(MOc`UE!l{I>{e%Fo5m&I@5NgYxmRaG5~ZSxlhprYvS=yj&(cCcL~5^PlSfUl$e} z&SspZro1c=9+Z}&lHlnp@Z?mMt*M<0B0B)s*}FQcN{dl~2Z1P2 zmH;FG8NdY?0Xkz-7e`TLW%(bck^bVcJ9>6_3>ad8@%jsde^i8N20ovI$CxNVq?@LW z&aNPA1j0P-u8uG`354;$DBcW&%Rrdf859tN-@(dFzQdnku*De+I|m2gIjgIRgSx>E zz)@OUfK4vIrk2ijAPyIZLu+Pd5Auh<{T()g!FOS>ovj-v+gXAg$HIWxYp8)&S}>CW z(ts?W04M{LfC=CRSOK)3BUoc1B}n; z0azb^IAHo^TNiUq@GKsf;4s7h0O|ed>Gm~nr!E!%j-yUb53^5Ck8{A2b5j8D(*75{ zLlyw=?SSP`zshJc0pQ950H|sERc4Y10JV<*fNY%OUdjKFg1pw$QK;C+Pqc`k`<4?Q&L!2M>J3Fn101prQ z0}~?nhlC0{_lAUyf`W{SfsTQ33H{O~%*!}fn3u6HU%G@vfQ5~VhmVhsapfu@0UjX^ z9zNdLX*~px1`!Dj2?-4k^AaZBe>k0<0C+#1v@e{SJZ%Nf@WHJhkRrf=$Jfr!@R5SU z0UmbR4Q8P42?+%b5g7p<6+8(?0+z#S&#S;I95U>PAIj;E<78L}SYX);pUBImu}@)# zLH}98R@1er>5*IHfBo^Fp~C9XbymbGZ3xDD*>3&;9l7A{z_fwIum$7WRj)VQd4H(< zag+Zf?mEviyR^Blf2bvtW?3ECH#B$_o)o)QXaSv_vf%S+%riou!?=eb%6!k5D7Yp0 zA_d$neFjZClgU4e%)fpLAcQ_ub7IcMkU##Eid^}Xh(&0Ao0ao`)4Zt3KE$Oqp>v?J zK3T&5&Abq6kM8p&PR=&#l z{W8iV{e;BZ4}Pshn?avG*7WmTZ^xsNa^bGR)LT;Ddg?19bdoGM9&GF1eSh2Ho%7eP zLZn9qPW&ND?PkIpJyIGc$6D(z{=i*zOb$Qwc1^F7*Tpsg^v?d`U2bVaCva*L%Adture(AD8Ge-8KHFC>o$9Kk7+QWO)4*;p8QR-s zL6p1u>6j+sm1Wx5u8FD{k>NPfmyt7`+(TIC!n}_qiM4wxj@v&mu+iM$_qW|%FTLS;*Uff%q@iFY=jrPKXm~@!`%9X71jnklS2aog z!1`}I0E?{YDz0h12|(@RIBq=Z`|w36Y`Xq)LSk{v)~*hu@El@(v?Ri{q=fc1moZ+r(XyEb&5#oNmplFl+EqLQ&2u~8Rwv5|B5Z@TEb z`cGH*gnH$&iPtqQq2ToQ&(q&H-EV~K;35MM2ATmE`D40L{)Tv7fH0?Pg%G&g==FYF z55$7E=~=H^x$^)`k8tvfp;tJvKv-;0%J!j% z_L0NtJ>a4%jRn0+o+~7qm-zM|t<9e3$f9&0F_8bxc4V2wABOQy?iV>9@9(;i^OnM` zIPKew?1kb)&wmP9pZl^h#JRkCQuS?S_$6?m3*gGJpK;<7zJYw{Gb|wL%AF^jtFfMe zK1LI?_{0zmv(oR0dya?hW&s=5f%%@&^!)VjxA#@GR~<5X^?UuqNE&)p1vAy6b{m^m z-_FYKA2&Z1=G|fc%}$X?5BmPLM=v&TFpzm`@j$qK`_cO15QWrs>7)J02PP(g`FYH}}B_TPX{M`Y(%&oQxciO{r=S?hvxN^@4jnXtKw5|IU;7 z%t08NKPd6HjsU>Z9>{+{RMg>Ln=(cFw1145a1$iH*x@i{|0G>(i#@>EsDmq<2!I#? zK)_A2moQpFdP-zOPD&1p4%A{#!a(RfbHb<=ey|)HF;7Yrh5<_#?bmIxohCdqPh{Ke z)hj%d#^gC35o1d1?&L#y=(QD{mPP1R)`aP4)hcKD38V0iF;awq$_?#Vnh4!2FlcPa zWo-bkiCvbw`17jQ_JlAoo{fh!sa#{hsFh3WuO=XguZI>XVG@Dq;10)vxCrd#4ED+DWyQ7R&6X>U|$}t+f-w{KOVUIq9)}gOinOeupc07gbRmD#PIop)O#NI|?IV`RH4ZnSNJ_+Fw{VEl|_*_b0 zV7CBax24&ZFq((dJPs!nTe@ZUoTfSZP|!ylU?`!nk&5SHb0B=t=lMD!$W8qeXClIh zpZDF&DAC*HHzB2aoSMq*>iz6fHg1ATlF;m4Uwz!l@(RyN!d5OnnMakBAveWa3zBrAi zq62kBd|~pn(4Sg|O&NFGOeT3>zXxlO%eeFI0dSvKK7dO(b2r#!0XjDUAVSy(0BkyK zfj=g^$Agb7z)1G4{)azS{N){deBA)^K~IH4Xyaej|EW-QOb0(*t5#vt{obEy{^}O& zR`JSGg7GF+(9iy9`lHhS6djyPF87w{nty9}`A>1dXJ9av93Kg_ow@4qFJJ@UP`e@U z%r13q<6prB2h1br$Xe`_@4bHoJ>S0SxV7L zQ_Y()Nnb?VV)lt0HWpT$+iriiv9qjhH}(wI*(L+MMf2bd_)y7e7&^KoP-b2_{>U&w zGotZj9?z%xs?X&-#%9Jz7ufwFuD(zXpWk3X}*gGQK2VW1H>#S*S7LwUeTuA?w<>vyMzXoBE!JEfAOWzvqT|nTV{B?uC{tE^TIo%oj z##`gV#j?MHQNW!P4lFSGMM8i_LV*2Z@(dH)MuCGz#>L0R;l`pw!GkCp5nN@z#>vHV zlZuxX++RTj@!*i)t*m8i?6FZ>sR-3+&>t8phcRJ46k{)v!bfe*{_iOYk^F)EIcha z>ba=Wou)-i=dv`V3IV1HL)%Iz+33tA)D?}<%WL=o8W3jrZ;RK(l^*R}FYT&N(aYDM zSCGmnD3mLXrl)Hm4)@aF# _R#EoFt}s=`tnKpcV2wSPC6##Mf}f`LlSQHqBG5I z^F(tv1xA~5iVLth#80+~VCtC*Wwy~2I;qIvGm=x?I0aTSXh==0qq|;pT$hzKyUw$? zR;kQQA1X4IX=tjXs^E%9fu;I3Lz`Ue&F~X;_p*uGacUojhw&Yrjii;*<9-hDi<&-K zdBK7shNk%zl?B&p{1k{EU^}T66i(YDPCE8|R^azFG4fdR#mSW4<`K>8k>bK#?URN% z!B_=pu4Kl?2A;ermmPw%=bnYvwR(%lXl49RhCk6xhm%q+Hcm#H1?84;i+Yp>Bw&$M zWS2Sr6nOuDgC(|&X~kcB5=!31c?p*UXV|SW6n*~FL3OZ8x`Zt+{_G_2DBbExuuE$n z)_8(2C$m}fxIemFQ<~DP!IHtckS9s31@=nB(@#^pq71K=n||*-GF1QILpfG@#k3?W ztp<%V9W5A{gIM(ORUSM`;f&{Z`Y0xjCrQkR^J;pvS0grfms5?vF#w+O8msCoS5yYJ z12wg}gbWp?&{El=HeY7+8ILWd%6PLmU&*t6vWm4MQTU(pA?{(Gw$}Ritnl#O2jON% z3d84D%BN7q))7AK!R;L0J2-yn;|r_6*eUKD+dETd!lKM(ylCtLve&`4&~M|O8LKe$ zyybU7g3&$uyBO_CX`NL)3xpKqNl5Q5Y=#60NNz2d-4VJiba3sBY_?#=u0?ry&*{&QWdLG zYcVIkfs11-rmm|VHz43?6kzji-YmmeF>Elw7Gp10$mg!)#~3vW4bI?8csMC{a&%^q zFgfcw#D|~7lgMw~+M)T%MR|eqH;#;^ChD&VmR%IZq^@?ZTSX&vjCvS8dR7uQO68@X zdJ?6W@eI%f;+@bnXmnhGJQ^t+T1+`;hS? zzQ3qwAVoui9UausW@ZB6AR-J4lll)8C?|gT^v?Msp8W+XP7D~6YiQm(#NmD;XZ>Nb zI3Zj1q*%9X&LXRHk&~s?UEq+_^d|+o7gXnSu3CO1?i zCl;~X391EIryap5nL`LtVXP88cof}_)ikNw!0W*CmNV_f7M|GCg}D8KqKV<>&*hCH zS*`kCmdL+*P8hbpgwFk}v8`9VMG9N7nU-Iz7%3ya2Ge>0Z^Cn^$`^mQs=Y*2{Q-}g zHh(@HHzOTG@b+uk4)xlyWRBu1jM1h6_^PFXt*M1|NCG8~wh{^QQhZD#8Oh`v)cti# z!aBOBg9+!7#hho!jOr7TcI4!u0(+||Fk_`i~i%z3RB+iLPS-g3wyme3|0d+|Htf5F*roQgr>D(N@><*kTg$?bDsBA7m-|uh66&3wA`C70BJ43`c%U8!v7U9T9auz$3Fr>u~7> zHC20sOHB__%p2$%J^S5~v-QAw<5O>Q9-iA`o@e~JT8T4v-HWp7nCB(*U6l+cpKken ztz@Ml_F&OjEnXN}5sM-4rwYbR$2%!F1>Wf&Q8!B(i_)%_l1yoqAzc^B(F{&}Uu?YS zZ^PkaYQ1IGKi1b(I9bvqQ&A(Amr|LNOv|357AIQZ^(u2WBweMg`|dhzzMHx?V+5nQ z#Dag*!e?mjV@UaoCuPMd>ud6yLGVQ#^Dj!yhQUZsr(U|Zjs+iMVSkz6u2~2jOE9)% zzL`t}Q*38^`s@7bc`*=T? z$bX0v{YV-sKA4zB^(mEva}|`2PPrpkhX#khI+&k`v1a8eVQ1J179`J>GrO3LAi1II z<~uufKF(`y85pQp2~xC@an)t{>^6n;R9;dNmge{6ZX+2s)x_I7se@yimpp1 zNQm;5zc69-PpzT!@oO5kBARDWO8btvBK?Af1@m{mO+E`_D(P{-IXU5b7}K4m)KSu_ z9UHuluieGzWJq1I4+g&=32eE3BXB9|DkbYpy?b?V&hQIJ9slEQo5+42l zEKh?r9v`X2^RtQLvs>#3k?MgAF1u@B)3Rcao7{8SId${ ztsg$Y_!QyfAf0&EORsJ{213^b-|eWrgeFmAqBCvsR7=r%QuRX#hX6fc#V|*a)dHgq z6OqE|u|}EHA#;C*&g`rjjaJ2vCjEAi*#?-#GDofJ*-l=Jbk_wY#G`1gH&Lc?s82vH z$tC8B?=!oh?<|cCsdGH-J_Q7CJ>+P8F4iMHr#^{&{8ABzA)u;>?hDe%jI`un4ewA7 z&XfEi3&JO+n<5W(JHW6j+ze-v7zhYG7EW|Sg5{;xiERc0t0it=iD>QhX2ohG}O8{ z3*U->58G1M;NCI<3Nj`fB0Bia8(4z9m#ZCiq_dp+L)ZdvnO!y?1KoLi;KH%12@`LPZ6yO9>tzB>uh2$M`;n)7 z+S;qEh1Or*KAK|!wi=!p;KrwGWRSoUQ)Nq{kk@tHdF;7`#=RdJnHN1Ej=3;dk>ts1aI~9z3=A7FSGar_C=2KU)IX=84 z%fKnis6LD-%^bR9G_;0B>-l2-EsZ}BBAuM9;DZ7V&LV$?L=90D^9q{2;pB7i@;fp4 z#^MRx%oHZCB?pf4Ps=aF7~#Y-e~1Y(>k6|@kn1(p<{y`dlD!APRVmN(VA}U11tx*0)!?YPmO!%4b2T~BpLgO!un(fP$g1)cp zGI^1|*3kJxW;jiei;xk&KoxQ&`h1eL4Lt>Fqmd1R(v6ylbV7%DE7+Dy(LOTVP+hwM zk0F94;6Gpp*B`4rEJjs_eT_w})YE&1PPf|jtUHUHV_8`i4Y(fh1e;7>*N`9)a4_raBU-A`NxLGUJn8f~j>@qUH`7MsUC5ZXPF1 zzFgTWdl&Vhl1JIdM_(ypQz%BTCNnlDOAGrs`LEM(Ak3?mC%-aqL82@bF^b2&CP6mW zgD6)YO&L8<#H1#P6Q6o7ULqDT86TbS;;hQ@~T0DwUgC z@4+Zp5^e*vxpw``PaB56Pri{jLFntNHr|>SB}*KEmdBDZo<^WNYqUD@;iS7}>9Re8 z+w~DYJ!pgG%UP&JQGIk}F2OQEaFC*sn}Q6Qd7N^Q#ZZu2f!6i5!aCQDd$3 zJ5uJdovW^XG9qrZL+ezn%T^Zqp?!(xEgwE~RZ`hUU~sANM#y1r0zO9c%yGRGQynxQ zFF;eF4mYQfdgmFoWsk-$A-9gQg0fz7;CPKLmo`c*m%wIjqB@{jnV`i|HAcPl!$7E% zVNfiKX|NSdSd3#Mr^!I!Y+j$Tn>*d(Zv`2`H=}ZCRPd2r{#k(gd12+){uDi8ShDo( z{VhX;%U?_HMWA2PLu03=La%P`npT}t~?#Dci=LrX;?#JQrMA1WhVi!ITtTt-lTNNa@%VP2@n_lABfl#wg@2_;aCh%&lDkKgf_lD7SkV{`rh!f^ zwOnt&ev(oK6`fWScc7BO?E*2ydrIMTh1YX%#;rsvX|leNt}&ki9G+WS=iWGQOnE#y zqtxJ1ReAJ!x$ArmbC+BkNS&bNrVzWccHRBy0dB38?u$qL=?!wzpM@W+O=xZyf2Fq{ zto6QObBFk&1(%23tGqjeYz9$hV4p7h4kPH0S##c7F9)EpN#OK_7)+25o zzn{6;vm9(DYp(u=o~$3;TTHdWOrwNr72PA@t*n;J2w6XoKxbz1$>I5MnMFZV)z#k!83#b3Vp?jgMbq$0I=0Q)Z=JTI@5%K#P-B<4;ljALPljbF}f$R;zCQ1a{{OiCCR=Zp(dB)6vA_& zFw*7-N7LP~N0JM^rX9AR6?%khdLz4eIje`P0g* z{m#B>dn=4`v;pdQUChE3C_Q1m7DWE463{f?w?u}RZ+rtz!L!P}v&4-aRH)#|!~tee zDOsXr6jcR^>Jy<|1PJBbL6ywUV-@#Gu6>hzFS{r7`gZxc3-J>gK_n>N!>dB_>$%JK zRFXO6wwFhG*w!)mgRU7aZt)>x=M0SV`Ies>ees%9>@_TTB5tu;IkEBKl23DkXgkbm zEVNI79m2q9)x^sK6eq^37>l$Wl|-K6!(?>%Qu3BZ_yVjmUadgy^kcl!|HsCLc5Rs<~{+*)!RN{gom;UyHH zntxeB%&le3ehQRl(Zu9cT@N)*3_Q3`ElWZ;(i<^Or84I^&5+pI#+`iyX(Eg#O{`Ok zoagKPvwpH5k$^d-TN{On*DPXAAp-3%WN$O$OizjO+SEI*Md%6 z7HqDIdY|^SWqjJ~%{XgOHsKA5_=kgU4X^}7+9c3!#kt{RA3gQoQ2cVACpe*Onbhz7 z2aQ2|A~u}n$nM!D_z0Hll4AO8tfJ%O%uUmt$o#45uekfo)uMW%=4G4I?F;aAMV2|; z>6<8`F`*T?tuYuO=%#Z;_997$zUY^Cya*uy32DQgwBLw*QMPFg>$}dUpw4cnhk&Y; zKo|vI7V9gcqDABh)G?JmKQ0}n=p^?%S3ct-A;jc(f2185&fnO^^h=o+12jKIj=O{wA0 zM#d50C*$o%9Ig?-fOo0PdBE@O_l4Qx=fW`GbtnBS=yi`gm-4;f`TG3_wC}O;|1Pvq zdeT?)Ja?`0d*zTy$V|^2dQ}ph?>--5NEp#ee6d(8cClEzC~h1%I)dFV`}h@F1Ra$b zjy>ZmGV|#fP@7)T%+OqGMhx?Z^E05KYgwU#V@E6E1V;_OCtgF~_tqzS=S@bZrUvg=qI_uu3uvfNBdSEujV}VzRkLu=oKGy#!h{~W9RvHVQvlo{kj94X2*9Hwp&`S* zk%w&%fIoBqcL-FFaABJSqN+~*Sky+@0|b;1W#i~)EnmP50lA&1n{seg4EQAjtv_F*RmRmyWg`Zc>SN2VY2;Clj(nlJfNOe320>q(rnTdKe5eE z2;!EysMU9UJ4i3{-sWPCV1h)8QPvLb^rDT_6;DHtd=%Ii4XPxFfvlCgJZ*T6YB+BQ zoN~tq={1)M-4ZuLur~mF< zJdw&OsTp+7s!u5N^^>6yGwf-zxw4WqT+56#ChRX7MD|zZ&m~FFNH9hs`t}^!0x`d? zuWB87-?gx*>ryK&hj^)mPVw&2<&_7QvLp*Kj|03PNI@753O{FaNknFf`!-SFqrLt@ zEx5wEUnl3K;@ixi`XTudTov3#RSxN`TiKtLEJdt0${kv6)lcc&syP}sGT+{3Y;{_< zx%0dz3@h9}A4S)=HqXb$yB^up#u|CVGP@S1ePVE9^3`zCPmS4Lq1$}Xt0^ACB?!@P z$Hjhua8s@M(a`m8PQK0Ts_(;OcrEt76_MR0*lpbNQMoyiemuj=s3gZWwur8#?Y?^o zEEI?!9ijWp@@Br3`*i>7k=AzV%cHp78b7Vq^1htk;tQq4z1E*jGsTr8(p`IQKR#=y zYLu>xKPtm0aKHd0@j%t5!AowyPtSNo-o_A(+)HLn@x`8fk+KMFjhE;>H1Ns8mJK}@6(ypeTcix

>p2^6kk15dezq=P|JOztT}RubI5Y{fxyUG#y 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

{tk`3@_;{+@UiCm!&^pJ{3x@LW z{5?OZ`*1};{Pc3RiCqcoHhn4Fd$EoEbv%#4d04NK+2n|by%eTi4?~iab=|?vXBCSk zA;2Y~#@Eu)u?7hfW9c4|i!VGi@B&#l4)wVUmp~RLZ*T_yx`5>(!+1!$xR3BU;5>H{|(S6>}pViWpki_l? zDj;GLDs8X4A?k=T94a+S;aA|r7{6Etzz!iv6Rj#-*zBXn2*@FMli`i|nu=CxE_7X) z_@iBES9}466#xq4h~0?E1L5buYkZxG?T=gr_Ohr*Q6f?dj4%MP270@<6=6b6_($W?7|GI`EZ+eRN?dUo zIYf#|-Quwyy!d5t`qE+uFO_ZdX``JN>i?=Gq%&?fHGXhU+~h*XKaEeh7z4I47hdY# zeOs3*fBs;{&*67#@lt6hHTNjW{WTACpcv zw(W>_OL^kXZl&U>Bc9C`p>Ul{^xJk-Z{K4zLzz3-{IZ= zlQ)l)vC8a6ldZKUqv%haBknWdRbKUsNC-Kf35`!s%O2z{&%7+zSzc;^6PKed$ombE8%6 zhONyYnbzy;Rfp!9D5-(4w<&w}hp>MW#Dih0`qJrBKaOpJIO zE5~k!$JHO(-N!wO{PTaF8+#sON(o0b?dvZWDQ;Owcy0dTSmW`z*UC{`;`yL-YxDZa zC9{ny2c4m=3v+RW_C?>Sm0s~mLm17taFD6ZALX01qE^(w4)^kWdNH^-vTg5-Y+S`0 znc4dA*+NK(An`E~U9H2J0ZXbiT#I%%Qnp(S zygO^1JUL@!ohkmlWhP_~pFfO+gZ0iv!{PHPBWYt7q8^MMnQXuuu}+q1~s{l4B)5 z8=CpL-T)RiMiZ0ds+9omC;KGWibhK@FYdMI%}}e0Rz}r!Eqv>yz<%LUeXHly^V8Yh z&vcOSJ^MjVJX>Lda7 zl=9$!iLgws%Ky{dcSkj~b^C@A5CRxl=v|N&dOu1Rl_miKp@&{V6_BDJMXGc{F9wj_ zO91IbdJkQt3QEzVARr*%Lp!$XI*Lwbx#AãoWHU5TmsJ= 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 literal 58977 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 J=JWgGzX56~miqtz diff --git a/mimic3_http/README.md b/mimic3_http/README.md index bd24ddf..1bcc33d 100644 --- a/mimic3_http/README.md +++ b/mimic3_http/README.md @@ -2,56 +2,12 @@ A small HTTP web server for the [Mimic 3](https://github.com/MycroftAI/mimic3) text to speech system. -[Available voices](https://github.com/MycroftAI/mimic3-voices) +* [Available voices](https://github.com/MycroftAI/mimic3-voices) +* [Documentation](https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/coming-soon-mimic-3) ![screenshot of web interface](img/server_screenshot.jpg) -## Running the Server +## License -``` sh -mimic3-server -``` - -This will start a web server at `http://localhost:59125` - -See `mimic3-server --debug` for more options. - - -### Endpoints - -* `/api/tts` - * `POST` text or [SSML](#ssml) and receive WAV audio back - * Use `?voice=` to select a different [voice/speaker](#voice-keys) - * Set `Content-Type` to `application/ssml+xml` (or use `?ssml=1`) for [SSML](#ssml) input -* `/api/voices` - * Returns a JSON list of available voices - -An [OpenAPI](https://www.openapis.org/) test page is also available at `http://localhost:59125/openapi` - - -### CUDA Acceleration - -If you have a GPU with support for CUDA, you can accelerate synthesis with the `--cuda` flag. This requires you to install the [onnxruntime-gpu](https://pypi.org/project/onnxruntime-gpu/) Python package. - -Using [nvidia-docker](https://github.com/NVIDIA/nvidia-docker) is highly recommended. See the `Dockerfile.gpu` file in the parent repository for an example of how to build a compatible container. - - -## Running the Client - -Assuming you have started `mimic3-server` and can access `http://localhost:59125`, then: - -``` sh -mimic3 --remote --voice 'en_UK/apope_low' 'My hovercraft is full of eels.' > hovercraft_eels.wav -``` - -If your server is somewhere besides `localhost`, use `mimic3 --remote ...` - -See `mimic3 --help` for more options. - - -## MaryTTS Compatibility - -Use the Mimic 3 web server as a drop-in replacement for [MaryTTS](http://mary.dfki.de/), for example with [Home Assistant](https://www.home-assistant.io/integrations/marytts/). - -Make sure to use a compatible [voice key](#voice-keys) like `en_UK/apope_low`. +Mimic 3 is available under the [AGPL v3 license](LICENSE) diff --git a/mimic3_tts/README.md b/mimic3_tts/README.md index d7cdeaf..3797309 100644 --- a/mimic3_tts/README.md +++ b/mimic3_tts/README.md @@ -1,348 +1,11 @@ # Mimic 3 -A fast and local neural text to speech system for [Mycroft](https://mycroft.ai/) and the [Mark II](https://mycroft.ai/product/mark-ii/). +A fast and local neural text to speech system developed by [Mycroft](https://mycroft.ai/) for the [Mark II](https://mycroft.ai/product/mark-ii/). * [Available voices](https://github.com/MycroftAI/mimic3-voices) -* [Mimic 3 Architecture](#architecture) - - -## Command-Line Tools - - -### mimic3 - - -#### Basic Synthesis - -```sh -mimic3 --voice "" > output.wav -``` - -where `` is a [voice key](https://github.com/MycroftAI/mimic3/#voice-keys) like `en_UK/apope_low`. -`` may contain multiple sentences, which will be combined in the final output WAV file. These can also be [split into separate WAV files](#multiple-wav-output). - - -#### SSML Synthesis - -```sh -mimic3 --ssml --voice "" > output.wav -``` - -where `` is valid [SSML](https://www.w3.org/TR/speech-synthesis11/). Not all SSML features are supported, see [the documentation](#ssml) for details. - -If your SSML contains `` tags, add `--mark-file ` to the command-line and use `--interactive` mode. As the marks are encountered, their names will be written on separate lines to the file: - -```sh -mimic3 --ssml --interactive --mark-file - 'Test 1. Test 2.' -``` - - -#### Long Texts - -If your text is very long, and you would like to listen to it as its being synthesized, use `--interactive` mode: - -```sh -mimic3 --interactive < long.txt -``` - -Each input line will be synthesized and played (see `--play-program`). By default, 5 sentences will be kept in an output queue, only blocking synthesis when the queue is full. You can adjust this value with `--result-queue-size`. - -If your long text is fixed-width with blank lines separating paragraphs like those from [Project Gutenberg](https://www.gutenberg.org/), use the `--process-on-blank-line` option so that sentences will not be broken at line boundaries. For example, you can listen to "Alice in Wonderland" like this: - -```sh -curl --output - 'https://www.gutenberg.org/files/11/11-0.txt' | \ - mimic3 --interactive --process-on-blank-line -``` - - -#### Multiple WAV Output - -With `--output-dir` set to a directory, Mimic 3 will output a separate WAV file for each sentence: - -```sh -mimic3 'Test 1. Test 2.' --output-dir /path/to/wavs -``` - -By default, each WAV file will be named using the (slightly modified) text of the sentence. You can have WAV files named using a timestamp instead with `--output-naming time`. For full control of the output naming, the `--csv` command-line flag indicates that each sentence is of the form `id|text` where `id` will be the name of the WAV file. - -```sh -cat << EOF | -s01|The birch canoe slid on the smooth planks. -s02|Glue the sheet to the dark blue background. -s03|It's easy to tell the depth of a well. -s04|These days a chicken leg is a rare dish. -s05|Rice is often served in round bowls. -s06|The juice of lemons makes fine punch. -s07|The box was thrown beside the parked truck. -s08|The hogs were fed chopped corn and garbage. -s09|Four hours of steady work faced us. -s10|Large size in stockings is hard to sell. -EOF - mimic3 --csv --output-dir /path/to/wavs -``` - -You can adjust the delimiter with `--csv-delimiter `. - -Additionally, you can use the `--csv-voice` option to specify a different voice or speaker for each line: - -```sh -cat << EOF | -s01|#awb|The birch canoe slid on the smooth planks. -s02|#rms|Glue the sheet to the dark blue background. -s03|#slt|It's easy to tell the depth of a well. -s04|#ksp|These days a chicken leg is a rare dish. -s05|#clb|Rice is often served in round bowls. -s06|#aew|The juice of lemons makes fine punch. -s07|#bdl|The box was thrown beside the parked truck. -s08|#lnh|The hogs were fed chopped corn and garbage. -s09|#jmk|Four hours of steady work faced us. -s10|en_UK/apope_low|Large size in stockings is hard to sell. -EOF - mimic3 --voice 'en_US/cmu-arctic_low' --csv-voice --output-dir /path/to/wavs -``` - -The second contain can contain a `#` or an entirely different voice! - - -#### Interactive Mode - -With `--interactive`, Mimic 3 will switch into interactive mode. After entering a sentence, it will be played with `--play-program`. - -```sh -mimic3 --interactive -Reading text from stdin... -Hello world! -``` - -Use `CTRL+D` or `CTRL+C` to exit. - - -#### Noise and Length Settings - -Synthesis has the following additional parameters: - -* `--noise-scale` and `--noise-w` - * Determine the speaker volatility during synthesis - * 0-1, default is 0.667 and 0.8 respectively -* `--length-scale` - makes the voice speaker slower (> 1) or faster (< 1) - -Individual voices have default settings for these parameters in their `config.json` files (under `inference`). - - -#### List Voices - -```sh -mimic3 --voices -``` - - -#### CUDA Acceleration - -If you have a GPU with support for CUDA, you can accelerate synthesis with the `--cuda` flag. This requires you to install the [onnxruntime-gpu](https://pypi.org/project/onnxruntime-gpu/) Python package. - -Using [nvidia-docker](https://github.com/NVIDIA/nvidia-docker) is highly recommended. See the `Dockerfile.gpu` file in the parent repository for an example of how to build a compatible container. - - - -### mimic3-download - -Mimic 3 automatically downloads voices when they're first used, but you can manually download them too with `mimic3-download`. - -For example: - -``` sh -mimic3-download 'en_US/*' -``` - -will download all U.S. English voices to `${HOME}/.local/share/mycroft/mimic3` (technically `${XDG_DATA_HOME}/mimic3`). - -See `mimic3-download --help` for more options. - - -## SSML - -A subset of [SSML](https://www.w3.org/TR/speech-synthesis11/) (Speech Synthesis Markup Language) is supported: - -* `` - wrap around SSML text - * `lang` - set language for document -* `` - sentence (disables automatic sentence breaking) - * `lang` - set language for sentence -* `` / `` - word (disables automatic tokenization) -* `` - set voice of inner text - * `voice` - name or language of voice - * Name format is `tts:voice` (e.g., "glow-speak:en-us_mary_ann") or `tts:voice#speaker_id` (e.g., "coqui-tts:en_vctk#p228") - * If one of the supported languages, a preferred voice is used (override with `--preferred-voice `) -* `` - change speaking attributes - * Supported `attribute` names: - * `volume` - speaking volume - * number in [0, 100] - 0 is silent, 100 is loudest (default) - * +X, -X, +X%, -X% - absolute/percent offset from current volume - * one of "default", "silent", "x-loud", "loud", "medium", "soft", "x-soft" - * `rate` - speaking rate - * number - 1 is default rate, < 1 is slower, > 1 is faster - * X% - 100% is default rate, 50% is half speed, 200% is twice as fast - * one of "default", "x-fast", "fast", "medium", "slow", "x-slow" -* `` - force interpretation of inner text - * `interpret-as` one of "spell-out", "date", "number", "time", or "currency" - * `format` - way to format text depending on `interpret-as` - * number - one of "cardinal", "ordinal", "digits", "year" - * date - string with "d" (cardinal day), "o" (ordinal day), "m" (month), or "y" (year) -* `` - Pause for given amount of time - * time - seconds ("123s") or milliseconds ("123ms") -* `` - substitute `alias` for inner text -* `` - supply phonemes for inner text - * See `phonemes.txt` in voice directory for available phonemes - * Phonemes may need to be separated by whitespace - -SSML `` support varies between voice types: - -* [gruut](https://github.com/rhasspy/gruut/#ssml) -* [eSpeak-ng](http://espeak.sourceforge.net/ssml.html) -* Character-based voices do not currently support `` - - -## Speech Dispatcher - -Mimic 3 can be used with the [Orca screen reader](https://help.gnome.org/users/orca/stable/) for Linux via [speech-dispatcher](https://github.com/brailcom/speechd). - -After [installing Mimic 3](https://github.com/MycroftAI/mimic3/#installation), make sure you also have speech-dispatcher installed: - -``` sh -sudo apt-get install speech-dispatcher -``` - -Create the file `/etc/speech-dispatcher/modules/mimic3-generic.conf` with the contents: - -``` text -GenericExecuteSynth "printf %s \'$DATA\' | /path/to/mimic3 --remote --voice \'$VOICE\' --stdout | $PLAY_COMMAND" -AddVoice "en-us" "MALE1" "en_UK/apope_low" -``` - -You will need `sudo` access to do this. Make sure to change `/path/to/mimic3` to wherever you installed Mimic 3. Note that the `--remote` option is used to connect to a local Mimic 3 web server (use `--remote ` if your server is somewhere besides `localhost`). - -To change the voice later, you only need to replace `en_UK/apope_low`. - -Next, edit the existing file `/etc/speech-dispatcher/speechd.conf` and ensure the following settings are present: - -``` text -DefaultVoiceType "MALE1" -DefaultModule mimic3-generic -``` - -Restart speech-dispatcher with: - -``` sh -sudo systemctl restart speech-dispatcher -``` - -and test it out with: - -``` sh -spd-say 'Hello from speech dispatcher.' -``` - - -### Systemd Service - -To ensure that Mimic 3 runs at boot, create a systemd service at `$HOME/.config/systemd/user/mimic3.service` with the contents: - -``` text -[Unit] -Description=Run Mimic 3 web server -Documentation=https://github.com/MycroftAI/mimic3 - -[Service] -ExecStart=/path/to/mimic3-server - -[Install] -WantedBy=default.target -``` - -Make sure to change `/path/to/mimic3-server` to wherever you installed Mimic 3. - -Refresh the systemd services: - -``` sh -systemctl --user daemon-reload -``` - -Now try starting the service: - -``` sh -systemctl --user start mimic3 -``` - -If that's successful, ensure it starts at boot: - -``` sh -systemctl --user enable mimic3 -``` - - -## Architecture - -Mimic 3 uses the [VITS](https://arxiv.org/abs/2106.06103), a "Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech". VITS is a combination of the [GlowTTS duration predictor](https://arxiv.org/abs/2005.11129) and the [HiFi-GAN vocoder](https://arxiv.org/abs/2010.05646). - -Our implementation is heavily based on [Jaehyeon Kim's PyTorch model](https://github.com/jaywalnut310/vits), with the addition of [Onnx runtime](https://onnxruntime.ai/) export for speed. - -![mimic 3 architecture](img/mimic3-architecture.png) - - -### Phoneme Ids - -At a high level, Mimic 3 performs two important tasks: - -1. Converting raw text to numeric input for the VITS TTS model, and -2. Using the model to transform numeric input into audio output - -The second step is the same for every voice, but the first step (text to numbers) varies. There are currently three implementations of step 1, described below. - - -### gruut Phoneme-based Voices - -Voices that use [gruut](https://github.com/rhasspy/gruut/) for phonemization. - -gruut normalizes text and phonemizes words according to a lexicon, with a pre-trained grapheme-to-phoneme model used to guess unknown word pronunciations. - - -### eSpeak Phoneme-based Voices - -Voices that use [eSpeak-ng](https://github.com/espeak-ng/espeak-ng) for phonemization (via [espeak-phonemizer](https://github.com/rhasspy/espeak-phonemizer)). - -eSpeak-ng normalizes and phonemizes text using internal rules and lexicons. It supports a large number of languages, and can handle many textual forms. - - -### Character-based Voices - -Voices whose "phonemes" are characters from an alphabet, typically with some punctuation. - -For voices whose orthography (writing system) is close enough to its spoken form, character-based voices allow for skipping the phonemization step. However, these voices do not support text normalization, so numbers, dates, etc. must be written out. - - -### Epitran-based Voices - -Voices that use [epitran](https://github.com/dmort27/epitran/) for phonemization. - -epitran uses rules to generate phonetic pronunciations from text. It does not support text normalization, however, so numbers, dates, etc. must be written out. - - -### Components of a Voice Model - -Voice models are stored in a directory with a specific layout: - -* `_` (e.g., `en_UK`) - * `_` (e.g., `apope_low`) - * `ALIASES` - alternative names for the voice, one per line (optional) - * `config.json` - training/inference configuration (see [code](https://github.com/MycroftAI/mimic3/blob/master/mimic3-tts/mimic3_tts/config.py) for details) - * `generator.onnx` - exported inference model (see `ids_to_audio` method in [`voice.py`](https://github.com/MycroftAI/mimic3/blob/master/mimic3-tts/mimic3_tts/voice.py)) - * `LICENSE` - text, name, or URL of voice model license - * `phoneme_map.txt` - mapping from source phoneme to destination phoneme(s) (optional) - * `phonemes.txt` - mapping from integer ids to phonemes (`_` = padding, `^` = beginning of utterance, `$` = end of utterance, `#` = word break) - * `README.md` - description of the voice - * `SOURCE` - URL(s) of the dataset(s) this voice was trained on - * `VERSION` - version of the voice in the format "MAJOR.Minor.bugfix" (e.g. "1.0.2") +* [Documentation](https://mycroft-ai.gitbook.io/docs/mycroft-technologies/mimic-tts/coming-soon-mimic-3) ## License -See [license file](LICENSE) +Mimic 3 is available under the [AGPL v3 license](LICENSE) diff --git a/opentts_abc/README.md b/opentts_abc/README.md new file mode 100644 index 0000000..280aece --- /dev/null +++ b/opentts_abc/README.md @@ -0,0 +1,3 @@ +# OpenTTS ABC + +Abstract base classes used by the [Mimic 3](https://github.com/MycroftAI/mimic3) text to speech system.