From 996bc7ca8b864854a3ecf0cc0c861ab47942de6a Mon Sep 17 00:00:00 2001
From: Pierre Leroux
Date: Mon, 2 Dec 2024 17:10:55 +0100
Subject: [PATCH] fix: change ./build directory to `build` branch and deploy
gh-pages with actions (PR #12)
create a build.yml action to install/build and deploy to a specific
`build` branch, allow to not populate source code with build output.
create a gh-pages.yml action to deploy gh-pages manually, install/build
and push the demo folder to actions/upload-pages-artifact and then
deploy to actions/deploy-pages.
test folder is build to ./build and run with `npm run test`
---
.github/workflows/build.yml | 51 ++
.github/workflows/gh-pages.yml | 61 ++
.github/workflows/node.yml | 4 +-
.gitignore | 1 +
README.md | 21 +-
build/cjs/data.gen.d.ts | 201 -------
build/cjs/data.gen.js | 13 -
build/cjs/index.d.ts | 1 -
build/cjs/index.js | 27 -
build/cjs/voices.d.ts | 46 --
build/cjs/voices.js | 449 ---------------
build/mjs/package.json | 4 -
build/mjs/src/data.gen.d.ts | 201 -------
build/mjs/src/data.gen.js | 10 -
build/mjs/src/index.d.ts | 1 -
build/mjs/src/index.js | 1 -
build/mjs/src/voices.d.ts | 46 --
build/mjs/src/voices.js | 412 --------------
build/mjs/test/voices.test.d.ts | 1 -
build/mjs/test/voices.test.js | 524 ------------------
demo/script.js | 4 +-
package-lock.json | 258 +++++++++
.../package.json => package.build.cjs.json | 0
package.build.json | 10 +
package.build.mjs.json | 3 +
package.json | 7 +-
tsconfig-base.json | 4 +-
tsconfig.json => tsconfig-mjs.json | 0
tsconfig-test.json | 11 +
tsconfig-types.json | 11 +
30 files changed, 426 insertions(+), 1957 deletions(-)
create mode 100644 .github/workflows/build.yml
create mode 100644 .github/workflows/gh-pages.yml
delete mode 100644 build/cjs/data.gen.d.ts
delete mode 100644 build/cjs/data.gen.js
delete mode 100644 build/cjs/index.d.ts
delete mode 100644 build/cjs/index.js
delete mode 100644 build/cjs/voices.d.ts
delete mode 100644 build/cjs/voices.js
delete mode 100644 build/mjs/package.json
delete mode 100644 build/mjs/src/data.gen.d.ts
delete mode 100644 build/mjs/src/data.gen.js
delete mode 100644 build/mjs/src/index.d.ts
delete mode 100644 build/mjs/src/index.js
delete mode 100644 build/mjs/src/voices.d.ts
delete mode 100644 build/mjs/src/voices.js
delete mode 100644 build/mjs/test/voices.test.d.ts
delete mode 100644 build/mjs/test/voices.test.js
rename build/cjs/package.json => package.build.cjs.json (100%)
create mode 100644 package.build.json
create mode 100644 package.build.mjs.json
rename tsconfig.json => tsconfig-mjs.json (100%)
create mode 100644 tsconfig-test.json
create mode 100644 tsconfig-types.json
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..86e5fe2
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,51 @@
+# Simple workflow for deploying static content to GitHub Pages
+name: Build and commit to `build` branch
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ["main"]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "build"
+ cancel-in-progress: false
+
+jobs:
+ # Single deploy job since we're just deploying
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Node build
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ - run: |
+ npm ci --foreground-scripts
+ npm run build
+ ls -la ./
+ ls -laR ./build
+
+ - name: Deploy
+ uses: peaceiris/actions-gh-pages@v4
+ # If you're changing the branch from main,
+ # also change the `main` in `refs/heads/main`
+ # below accordingly.
+ if: github.ref == 'refs/heads/main'
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./build
+ publish_branch: build # default: gh-pages
+ destination_dir: ./
+ enable_jekyll: true # do not write .nojekyll empty file
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
new file mode 100644
index 0000000..2006f5d
--- /dev/null
+++ b/.github/workflows/gh-pages.yml
@@ -0,0 +1,61 @@
+# Simple workflow for deploying static content to GitHub Pages
+name: Deploy demo page to gh-pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ["main"]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+jobs:
+ # Single deploy job since we're just deploying
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Node build
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ - run: |
+ npm ci --foreground-scripts
+ npm run build
+ ls -la ./
+ ls -laR ./build
+ ls -laR ./demo
+ mkdir build-demo
+ cp -r ./build ./build-demo/
+ cp -r ./demo ./build-demo/
+ ls -laR ./build-demo
+
+
+ - name: Setup Pages
+ uses: actions/configure-pages@v5
+
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: "./build-demo"
+
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml
index 3470663..4df413b 100644
--- a/.github/workflows/node.yml
+++ b/.github/workflows/node.yml
@@ -13,9 +13,9 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v4
with:
- node-version: '20.x'
+ node-version: '22'
- name: Install dependencies
- run: npm ci
+ run: npm ci --foreground-scripts
- name: Run Build
run: npm run build
- name: Run tests
diff --git a/.gitignore b/.gitignore
index b69df58..5c1ff67 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
node_modules/
script/web-speech-recommended-voices/
.DS_Store
+build/
diff --git a/README.md b/README.md
index cb70fa0..f479122 100644
--- a/README.md
+++ b/README.md
@@ -34,22 +34,19 @@ It demonstrates the following features:
## QuickStart
-`npm install https://github.com/readium/speech`
+`npm install https://github.com/readium/speech#build`
```
-import { getVoices } from "readium-speech";
-// or with cjs only :
-import { getVoices } from "readium-speech/build/cjs/voices";
-// or with esm mjs :
-import { getVoices } from "readium-speech/build/mjs/src/voices";
-
-const voices = await getVoices();
-console.log(voices);
+import { voicesSelection} from "readium-speech";
+console.log(voicesSelection);
+// or with cjs only :
+const { getVoices } = require("readium-speech/cjs/voices.js");
+console.log(getVoices);
-// or
-import { voicesSelection } from "readium-speech/build/cjs";
-import { voicesSelection } from "readium-speech/build/mjs";
+// or with esm mjs :
+import { getVoices } from "readium-speech/mjs/voices.js";
+console.log(getVoices);
const voices = await voicesSelection.getVoices();
console.log(voices);
diff --git a/build/cjs/data.gen.d.ts b/build/cjs/data.gen.d.ts
deleted file mode 100644
index b5856da..0000000
--- a/build/cjs/data.gen.d.ts
+++ /dev/null
@@ -1,201 +0,0 @@
-export declare const novelty: string[];
-export declare const veryLowQuality: string[];
-export type TGender = "female" | "male" | "nonbinary";
-export type TQuality = "veryLow" | "low" | "normal" | "high" | "veryHigh";
-export interface IRecommended {
- label: string;
- name: string;
- altNames?: string[];
- language: string;
- gender?: TGender | undefined;
- age?: string | undefined;
- quality: TQuality[];
- recommendedPitch?: number | undefined;
- recommendedRate?: number | undefined;
- localizedName: string;
-}
-export declare const recommended: Array;
-export declare const quality: {
- ar: {
- normal: string;
- high: string;
- };
- ca: {
- normal: string;
- high: string;
- };
- "cmn-CN": {
- normal: string;
- high: string;
- };
- "cmn-TW": {
- normal: string;
- high: string;
- };
- cs: {
- normal: string;
- high: string;
- };
- da: {
- normal: string;
- high: string;
- };
- de: {
- normal: string;
- high: string;
- };
- el: {
- normal: string;
- high: string;
- };
- en: {
- normal: string;
- high: string;
- };
- es: {
- normal: string;
- high: string;
- };
- fi: {
- normal: string;
- high: string;
- };
- fr: {
- normal: string;
- high: string;
- };
- he: {
- normal: string;
- high: string;
- };
- hi: {
- normal: string;
- high: string;
- };
- hr: {
- normal: string;
- high: string;
- };
- hu: {
- normal: string;
- high: string;
- };
- id: {
- normal: string;
- high: string;
- };
- it: {
- normal: string;
- high: string;
- };
- ja: {
- normal: string;
- high: string;
- };
- ko: {
- normal: string;
- high: string;
- };
- ms: {
- normal: string;
- high: string;
- };
- nb: {
- normal: string;
- high: string;
- };
- nl: {
- normal: string;
- high: string;
- };
- pl: {
- normal: string;
- high: string;
- };
- pt: {
- normal: string;
- high: string;
- };
- ro: {
- normal: string;
- high: string;
- };
- ru: {
- normal: string;
- high: string;
- };
- sk: {
- normal: string;
- high: string;
- };
- sl: {
- normal: string;
- high: string;
- };
- sv: {
- normal: string;
- high: string;
- };
- th: {
- normal: string;
- high: string;
- };
- tr: {
- normal: string;
- high: string;
- };
- uk: {
- normal: string;
- high: string;
- };
- vi: {
- normal: string;
- high: string;
- };
-};
-export declare const defaultRegion: {
- ar: string;
- bg: string;
- bho: string;
- bn: string;
- ca: string;
- cmn: string;
- cs: string;
- da: string;
- de: string;
- el: string;
- en: string;
- es: string;
- eu: string;
- fa: string;
- fi: string;
- fr: string;
- gl: string;
- he: string;
- hi: string;
- hr: string;
- hu: string;
- id: string;
- it: string;
- ja: string;
- ko: string;
- mr: string;
- ms: string;
- nb: string;
- nl: string;
- pl: string;
- pt: string;
- ro: string;
- ru: string;
- sk: string;
- sl: string;
- sv: string;
- ta: string;
- te: string;
- th: string;
- tr: string;
- uk: string;
- vi: string;
- wuu: string;
- yue: string;
-};
diff --git a/build/cjs/data.gen.js b/build/cjs/data.gen.js
deleted file mode 100644
index b0c7d62..0000000
--- a/build/cjs/data.gen.js
+++ /dev/null
@@ -1,13 +0,0 @@
-"use strict";
-// https://github.com/readium/speech
-// file script-generated by : npm run extract-json-data
-//
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.defaultRegion = exports.quality = exports.recommended = exports.veryLowQuality = exports.novelty = void 0;
-exports.novelty = ["Albert", "Bad News", "Bahh", "Bells", "Boing", "Bubbles", "Cellos", "Good News", "Jester", "Organ", "Superstar", "Trinoids", "Whisper", "Wobble", "Zarvox"];
-exports.veryLowQuality = ["Eddy", "Flo", "Grandma", "Grandpa", "Jacques", "Reed", "Rocko", "Sandy", "Shelley", "Fred", "Junior", "Kathy", "Ralph", "eSpeak Arabic", "eSpeak Bulgarian", "eSpeak Bengali", "eSpeak Catalan", "eSpeak Chinese (Mandarin, latin as English)", "eSpeak Czech", "eSpeak Danish", "eSpeak German", "eSpeak Greek", "eSpeak Spanish (Spain)", "eSpeak Estonian", "eSpeak Finnish", "eSpeak Gujarati", "eSpeak Croatian", "eSpeak Hungarian", "eSpeak Indonesian", "eSpeak Italian", "eSpeak Kannada", "eSpeak Korean", "eSpeak Lithuanian", "eSpeak Latvian", "eSpeak Malayalm", "eSpeak Marathi", "eSpeak Malay", "eSpeak Norwegian Bokmål", "eSpeak Polish", "eSpeak Portuguese (Brazil)", "eSpeak Romanian", "eSpeak Russian", "eSpeak Slovak", "eSpeak Slovenian", "eSpeak Serbian", "eSpeak Swedish", "eSpeak Swahili", "eSpeak Tamil", "eSpeak Telugu", "eSpeak Turkish", "eSpeak Vietnamese (Northern)"];
-;
-exports.recommended = [{ "label": "Amina", "name": "Microsoft Amina Online (Natural) - Arabic (Algeria)", "language": "ar-DZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ismael", "name": "Microsoft Ismael Online (Natural) - Arabic (Algeria)", "language": "ar-DZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Laila", "name": "Microsoft Laila Online (Natural) - Arabic (Bahrain)", "language": "ar-BH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ali", "name": "Microsoft Ali Online (Natural) - Arabic (Bahrain)", "language": "ar-BH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Salma", "name": "Microsoft Salma Online (Natural) - Arabic (Egypt)", "language": "ar-EG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Shakir", "name": "Microsoft Shakir Online (Natural) - Arabic (Egypt)", "language": "ar-EG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rana", "name": "Microsoft Rana Online (Natural) - Arabic (Iraq)", "language": "ar-IQ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Bassel", "name": "Microsoft Bassel Online (Natural) - Arabic (Iraq)", "language": "ar-IQ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sana", "name": "Microsoft Sana Online (Natural) - Arabic (Jordan)", "language": "ar-JO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Taim", "name": "Microsoft Taim Online (Natural) - Arabic (Jordan)", "language": "ar-JO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Noura", "name": "Microsoft Noura Online (Natural) - Arabic (Kuwait)", "language": "ar-KW", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fahed", "name": "Microsoft Fahed Online (Natural) - Arabic (Kuwait)", "language": "ar-KW", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Layla", "name": "Microsoft Layla Online (Natural) - Arabic (Lebanon)", "language": "ar-LB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rami", "name": "Microsoft Rami Online (Natural) - Arabic (Lebanon)", "language": "ar-LB", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Iman", "name": "Microsoft Iman Online (Natural) - Arabic (Libya)", "language": "ar-LY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Omar", "name": "Microsoft Omar Online (Natural) - Arabic (Libya)", "language": "ar-LY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mouna", "name": "Microsoft Mouna Online (Natural) - Arabic (Morocco)", "language": "ar-MA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jamal", "name": "Microsoft Jamal Online (Natural) - Arabic (Morocco)", "language": "ar-MA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Aysha", "name": "Microsoft Aysha Online (Natural) - Arabic (Oman)", "language": "ar-OM", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Abdullah", "name": "Microsoft Abdullah Online (Natural) - Arabic (Oman)", "language": "ar-OM", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amal", "name": "Microsoft Amal Online (Natural) - Arabic (Qatar)", "language": "ar-QA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Moaz", "name": "Microsoft Moaz Online (Natural) - Arabic (Qatar)", "language": "ar-QA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Zariyah", "name": "Microsoft Zariyah Online (Natural) - Arabic (Saudi Arabia)", "language": "ar-SA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hamed", "name": "Microsoft Hamed Online (Natural) - Arabic (Saudi Arabia)", "language": "ar-SA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amany", "name": "Microsoft Amany Online (Natural) - Arabic (Syria)", "language": "ar-SY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Laith", "name": "Microsoft Laith Online (Natural) - Arabic (Syria)", "language": "ar-SY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Reem", "name": "Microsoft Reem Online (Natural) - Arabic (Tunisia)", "language": "ar-TN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hedi", "name": "Microsoft Hedi Online (Natural) - Arabic (Tunisia)", "language": "ar-TN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fatima", "name": "Microsoft Fatima Online (Natural) - Arabic (United Arab Emirates)", "language": "ar-AE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hamdan", "name": "Microsoft Hamdan Online (Natural) - Arabic (United Arab Emirates)", "language": "ar-AE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maryam", "name": "Microsoft Maryam Online (Natural) - Arabic (Yemen)", "language": "ar-YE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Saleh", "name": "Microsoft Saleh Online (Natural) - Arabic (Yemen)", "language": "ar-YE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mariam", "name": "Mariam", "language": "ar-001", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Laila (Apple)", "name": "Laila", "language": "ar-001", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tarik", "name": "Tarik", "language": "ar-001", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Majed", "name": "Majed", "language": "ar-001", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Hoda", "name": "Microsoft Hoda - Arabic (Arabic )", "language": "ar-EG", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Naayf", "name": "Microsoft Naayf - Arabic (Saudi Arabia)", "language": "ar-AS", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت انثوي 1", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-arc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-arc-local", "Android Speech Recognition and Synthesis from Google ar-language"], "language": "ar", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت انثوي 2", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-arz-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-arz-local"], "language": "ar", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت ذكر 1", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-ard-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-ard-local"], "language": "ar", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت ذكر 2", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-are-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-are-local"], "language": "ar", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kalina", "name": "Microsoft Kalina Online (Natural) - Bulgarian (Bulgaria)", "language": "bg-BG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Borislav", "name": "Microsoft Borislav Online (Natural) - Bulgarian (Bulgaria)", "language": "bg-BG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Daria", "name": "Daria", "language": "bg-BG", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Ivan", "name": "Microsoft Ivan - Bulgarian (Bulgaria)", "language": "bg-BG", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женски глас", "name": "Android Speech Recognition and Synthesis from Google bg-bg-x-ifk-network", "altNames": ["Android Speech Recognition and Synthesis from Google bg-bg-x-ifk-local", "Android Speech Recognition and Synthesis from Google bg-bg-language"], "language": "bg-BG", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Jaya", "name": "Jaya", "language": "bho-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tanishaa", "name": "Microsoft Tanishaa Online (Natural) - Bengali (India)", "language": "bn-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Bashkar", "name": "Microsoft Bashkar Online (Natural) - Bangla (India)", "language": "bn-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Nabanita", "name": "Microsoft Nabanita Online (Natural) - Bangla (Bangladesh)", "language": "bn-BD", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Pradeep", "name": "Microsoft Pradeep Online (Natural) - Bangla (Bangladesh)", "language": "bn-BD", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Piya", "name": "Piya", "language": "bn-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "মহিলা কণ্ঠস্বর 1", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bnf-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bnf-local", "Android Speech Recognition and Synthesis from Google bn-IN-language"], "language": "bn-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "মহিলা কণ্ঠস্বর 2", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bnx-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bnx-local"], "language": "bn-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "পুরুষ কন্ঠ 1", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bin-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bin-local"], "language": "bn-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "পুরুষ কন্ঠ 2", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bnm-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bnm-local"], "language": "bn-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "পুরুষ কন্ঠ", "name": "Google বাংলা (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google bn-bd-x-ban-network", "Chrome OS বাংলা", "Android Speech Recognition and Synthesis from Google bn-bd-x-ban-local", "Android Speech Recognition and Synthesis from Google bn-BD-language"], "language": "bn-BD", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Joana (Català)", "name": "Microsoft Joana Online (Natural) - Catalan (Spain)", "language": "ca-ES", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Enric (Català)", "name": "Microsoft Enric Online (Natural) - Catalan (Spain)", "language": "ca-ES", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Montse (Català)", "name": "Montse", "language": "ca-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Pau (Valencià)", "name": "Pau", "language": "ca-ES-u-sd-esvc", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jordi (Català)", "name": "Jordi", "language": "ca-ES", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Herena (Català)", "name": "Microsoft Herena - Catalan (Spain)", "language": "ca-ES", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Veu femenina catalana", "name": "Android Speech Recognition and Synthesis from Google ca-es-x-caf-network", "altNames": ["Android Speech Recognition and Synthesis from Google ca-es-x-caf-local", "Android Speech Recognition and Synthesis from Google ca-ES-language"], "language": "ca-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Xiaoxiao", "name": "Microsoft Xiaoxiao Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Xiaoyi", "name": "Microsoft Xiaoyi Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunxi", "name": "Microsoft Yunxi Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunxia", "name": "Microsoft Yunxia Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Xiaobei", "name": "Microsoft Xiaobei Online (Natural) - Chinese (Northeastern Mandarin)", "language": "cmn-CN-liaoning", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Xiaoni", "name": "Microsoft Xiaobei Online (Natural) - Chinese (Zhongyuan Mandarin Shaanxi)", "language": "cmn-CN-shaanxi", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunjian", "name": "Microsoft Yunjian Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunyang", "name": "Microsoft Yunyang Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "HsiaoChen", "name": "Microsoft HsiaoChen Online (Natural) - Chinese (Taiwan)", "language": "cmn-TW", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "HsiaoYu", "name": "Microsoft HsiaoYu Online (Natural) - Chinese (Taiwanese Mandarin)", "language": "cmn-TW", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "YunJhe", "name": "Microsoft YunJhe Online (Natural) - Chinese (Taiwan)", "language": "cmn-TW", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lilian", "name": "Lilian", "language": "cmn-CN", "gender": "female", "quality": ["normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tiantian", "name": "Tiantian", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Shasha", "name": "Shasha", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lili", "name": "Lili", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lisheng", "name": "Lisheng", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lanlan", "name": "Lanlan", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Shanshan", "name": "Shanshan", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yue", "name": "Yue", "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tingting", "name": "Tingting", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yu-shu", "name": "Yu-shu", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Dongmei", "name": "Dongmei", "language": "cmn-CN-liaoning", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Panpan", "name": "Panpan", "language": "cmn-CN-sichuan", "gender": "female", "quality": ["low", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Meijia", "name": "Meijia", "language": "cmn-TW", "gender": "female", "quality": ["low", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Han", "name": "Han", "language": "cmn-CN", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Bobo", "name": "Bobo", "language": "cmn-CN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Taotao", "name": "Taotao", "language": "cmn-CN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Binbin", "name": "Binbin", "language": "cmn-CN", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Li-Mu", "name": "Li-Mu", "language": "cmn-CN", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Haohao", "name": "Haohao", "language": "cmn-CN-shaanxi", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google 女声(香港)", "name": "Google 粤語(香港)", "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Google 女聲(臺灣)", "name": "Google 國語(臺灣)", "language": "cmn-TW", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Huihui", "name": "Microsoft Huihui - Chinese (Simplified, PRC)", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Yaoyao", "name": "Microsoft Yaoyao - Chinese (Simplified, PRC)", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kangkang", "name": "Microsoft Kangkang - Chinese (Simplified, PRC)", "language": "cmn-CN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Yating", "name": "Microsoft Yating - Chinese (Traditional, Taiwan)", "language": "cmn-TW", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hanhan", "name": "Microsoft Hanhan - Chinese (Traditional, Taiwan)", "language": "cmn-TW", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Zhiwei", "name": "Microsoft Zhiwei - Chinese (Traditional, Taiwan)", "language": "cmn-TW", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女声1", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-ccc-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-ccc-local", "Android Speech Recognition and Synthesis from Google zh-CN-language"], "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女声2", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-ssa-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-ssa-local"], "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男声1", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-ccd-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-ccd-local"], "language": "cmn-CN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男声2", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-cce-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-cce-local"], "language": "cmn-CN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女聲", "name": "Android Speech Recognition and Synthesis from Google cmn-TW-x-ctc-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-TW-x-ctc-local", "Android Speech Recognition and Synthesis from Google zh-TW-language"], "language": "cmn-TW", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲1", "name": "Android Speech Recognition and Synthesis from Google cmn-TW-x-ctd-network", "altNames": ["Chrome OS 粵語 1", "Android Speech Recognition and Synthesis from Google cmn-TW-x-ctd-local"], "language": "cmn-TW", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲2", "name": "Android Speech Recognition and Synthesis from Google cmn-TW-x-cte-network", "altNames": ["Chrome OS 粵語 1", "Android Speech Recognition and Synthesis from Google cmn-TW-x-cte-local"], "language": "cmn-CTW", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vlasta", "name": "Microsoft Vlasta Online (Natural) - Czech (Czech)", "language": "cs-CZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Antonin", "name": "Microsoft Antonin Online (Natural) - Czech (Czech)", "language": "cs-CZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Zuzana", "name": "Zuzana", "language": "cs-CZ", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Iveta", "name": "Iveta", "language": "cs-CZ", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jakub", "name": "Microsoft Jakub - Czech (Czech)", "language": "cs-CZ", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženský hlas", "name": "Google čeština (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google cs-cz-x-jfs-network", "Chrome OS čeština", "Android Speech Recognition and Synthesis from Google cs-cz-x-jfs-local", "Android Speech Recognition and Synthesis from Google cs-CZ-language"], "language": "cs-CZ", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Christel", "name": "Microsoft Christel Online (Natural) - Danish (Denmark)", "language": "da-DK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jeppe", "name": "Microsoft Jeppe Online (Natural) - Danish (Denmark)", "language": "da-DK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sara", "name": "Sara", "language": "da-DK", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Magnus", "name": "Magnus", "language": "da-DK", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Helle", "name": "Microsoft Helle - Danish (Denmark)", "language": "da-DK", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvindestemme 1", "name": "Google Dansk 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-kfm-network", "Chrome OS Dansk 1", "Android Speech Recognition and Synthesis from Google da-dk-x-kfm-local", "Android Speech Recognition and Synthesis from Google da-DK-language"], "language": "da-DK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvindestemme 2", "name": "Google Dansk 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-sfp-network", "Chrome OS Dansk 3", "Android Speech Recognition and Synthesis from Google da-dk-x-sfp-local"], "language": "da-DK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvindestemme 3", "name": "Google Dansk 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-vfb-network", "Chrome OS Dansk 4", "Android Speech Recognition and Synthesis from Google da-dk-x-vfb-local"], "language": "da-DK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mandsstemme", "name": "Google Dansk 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-nmm-network", "Chrome OS Dansk 2", "Android Speech Recognition and Synthesis from Google da-dk-x-nmm-local"], "language": "da-DK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Seraphina", "name": "Microsoft SeraphinaMultilingual Online (Natural) - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amala", "name": "Microsoft Amala Online (Natural) - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Katja", "name": "Microsoft Katja Online (Natural) - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Florian", "name": "Microsoft FlorianMultilingual Online (Natural) - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Conrad", "name": "Microsoft Conrad Online (Natural) - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Killian", "name": "Microsoft Killian Online (Natural) - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ingrid", "name": "Microsoft Ingrid Online (Natural) - German (Austria)", "language": "de-AT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jonas", "name": "Microsoft Jonas Online (Natural) - German (Austria)", "language": "de-AT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Leni", "name": "Microsoft Leni Online (Natural) - German (Switzerland)", "language": "de-CH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jan", "name": "Microsoft Jan Online (Natural) - German (Switzerland)", "language": "de-CH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Petra", "name": "Petra", "language": "de-DE", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Anna", "name": "Anna", "language": "de-DE", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Helena", "name": "Helena", "language": "de-DE", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Markus", "name": "Markus", "language": "de-DE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Viktor", "name": "Viktor", "language": "de-DE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yannick", "name": "Yannick", "language": "de-DE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Martin", "name": "Martin", "language": "de-DE", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google Deutsch", "name": "Weibliche Google-Stimme (Deutschland)", "language": "de-DE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hedda", "name": "Microsoft Hedda - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Katja", "name": "Microsoft Katja - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Stefan", "name": "Microsoft Stefan - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Michael", "name": "Microsoft Michael - German (Austria)", "language": "de-AT", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Karsten", "name": "Microsoft Karsten - German (Switzerland)", "language": "de-CH", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Weibliche Stimme 1 (Deutschland)", "name": "Google Deutsch 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-dea-network", "Chrome OS Deutsch 2", "Android Speech Recognition and Synthesis from Google de-de-x-dea-local", "Android Speech Recognition and Synthesis from Google de-DE-language"], "language": "de-DE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Weibliche Stimme 2 (Deutschland)", "name": "Google Deutsch 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-nfh-network", "Chrome OS Deutsch 1", "Android Speech Recognition and Synthesis from Google de-de-x-nfh-local"], "language": "de-DE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Männliche Stimme 1 (Deutschland)", "name": "Google Deutsch 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-deb-network", "Chrome OS Deutsch 3", "Android Speech Recognition and Synthesis from Google de-de-x-deb-local"], "language": "de-DE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Männliche Stimme 2 (Deutschland)", "name": "Google Deutsch 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-deg-network", "Chrome OS Deutsch 4", "Android Speech Recognition and Synthesis from Google de-de-x-deg-local"], "language": "de-DE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Athina", "name": "Microsoft Athina Online (Natural) - Greek (Greece)", "language": "el-GR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Nestoras", "name": "Microsoft Nestoras Online (Natural) - Greek (Greece)", "language": "el-GR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Melina", "name": "Melina", "language": "el-GR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nikos", "name": "Nikos", "language": "el-GR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Stefanos", "name": "Microsoft Stefanos - Greek (Greece)", "language": "el-GR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Γυναικεία φωνή", "name": "Google Ελληνικά (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google el-gr-x-vfz-network", "Chrome OS Ελληνικά", "Android Speech Recognition and Synthesis from Google el-gr-x-vfz-local", "Android Speech Recognition and Synthesis from Google el-GR-language"], "language": "el-GR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Emma", "name": "Microsoft EmmaMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Emma Online (Natural) - English (United States)"], "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Microsoft Ava", "name": "Microsoft AvaMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Ava Online (Natural) - English (United States)"], "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jenny", "name": "Microsoft Jenny Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Aria", "name": "Microsoft Aria Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Michelle", "name": "Microsoft Michelle Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ana", "name": "Microsoft Ana Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Andrew", "name": "Microsoft AndrewMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Andrew Online (Natural) - English (United States)"], "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Brian", "name": "Microsoft BrianMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Brian Online (Natural) - English (United States)"], "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Guy", "name": "Microsoft Guy Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Eric", "name": "Microsoft Eric Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Steffan", "name": "Microsoft Steffan Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Christopher", "name": "Microsoft Christopher Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Roger", "name": "Microsoft Roger Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sonia", "name": "Microsoft Sonia Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Libby", "name": "Microsoft Libby Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maisie", "name": "Microsoft Maisie Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ryan", "name": "Microsoft Ryan Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Thomas", "name": "Microsoft Thomas Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Natasha", "name": "Microsoft Natasha Online (Natural) - English (Australia)", "language": "en-AU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hayley", "name": "Microsoft Hayley Online - English (Australia)", "language": "en-AU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "William", "name": "Microsoft William Online (Natural) - English (Australia)", "language": "en-AU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Clara", "name": "Microsoft Clara Online (Natural) - English (Canada)", "language": "en-CA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Heather", "name": "Microsoft Heather Online - English (Canada)", "language": "en-CA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Liam", "name": "Microsoft Liam Online (Natural) - English (Canada)", "language": "en-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Neerja", "name": "Microsoft Neerja Online (Natural) - English (India)", "altNames": ["Microsoft Neerja Online (Natural) - English (India) (Preview)"], "language": "en-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Prabhat", "name": "Microsoft Prabhat Online (Natural) - English (India)", "language": "en-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Emily", "name": "Microsoft Emily Online (Natural) - English (Ireland)", "language": "en-IE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Connor", "name": "Microsoft Connor Online (Natural) - English (Ireland)", "language": "en-IE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Leah", "name": "Microsoft Leah Online (Natural) - English (South Africa)", "language": "en-ZA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Luke", "name": "Microsoft Luke Online (Natural) - English (South Africa)", "language": "en-ZA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yan", "name": "Microsoft Yan Online (Natural) - English (Hongkong)", "language": "en-HK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sam", "name": "Microsoft Sam Online (Natural) - English (Hongkong)", "language": "en-HK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Asilia", "name": "Microsoft Asilia Online (Natural) - English (Kenya)", "language": "en-KE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Chilemba", "name": "Microsoft Chilemba Online (Natural) - English (Kenya)", "language": "en-KE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Molly", "name": "Microsoft Molly Online (Natural) - English (New Zealand)", "language": "en-NZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mitchell", "name": "Microsoft Mitchell Online (Natural) - English (New Zealand)", "language": "en-NZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ezinne", "name": "Microsoft Ezinne Online (Natural) - English (Nigeria)", "language": "en-NG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Abeo", "name": "Microsoft Abeo Online (Natural) - English (Nigeria)", "language": "en-NG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Luna", "name": "Microsoft Luna Online (Natural) - English (Singapore)", "language": "en-SG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Wayne", "name": "Microsoft Wayne Online (Natural) - English (Singapore)", "language": "en-SG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Imani", "name": "Microsoft Imani Online (Natural) - English (Tanzania)", "language": "en-TZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Elimu", "name": "Microsoft Elimu Online (Natural) - English (Tanzania)", "language": "en-TZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Apple Ava", "name": "Ava", "language": "en-US", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Zoe", "name": "Zoe", "language": "en-US", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Allison", "name": "Allison", "language": "en-US", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nicky", "name": "Nicky", "language": "en-US", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Samantha", "name": "Samantha", "language": "en-US", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Joelle", "name": "Joelle", "language": "en-US", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Evan", "name": "Evan", "language": "en-US", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nathan", "name": "Nathan", "language": "en-US", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tom", "name": "Tom", "language": "en-US", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Alex", "name": "Alex", "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aaron", "name": "Aaron", "language": "en-US", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Kate", "name": "Kate", "language": "en-GB", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Stephanie", "name": "Stephanie", "language": "en-GB", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Serena", "name": "Serena", "language": "en-GB", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Martha", "name": "Martha", "language": "en-GB", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jamie", "name": "Jamie", "language": "en-GB", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Oliver", "name": "Oliver", "language": "en-GB", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Daniel", "name": "Daniel", "language": "en-GB", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Arthur", "name": "Arthur", "language": "en-GB", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Matilda", "name": "Matilda", "language": "en-AU", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Karen", "name": "Karen", "language": "en-AU", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Catherine", "name": "Catherine", "language": "en-AU", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lee", "name": "Lee", "language": "en-AU", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Gordon", "name": "Gordon", "language": "en-AU", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Isha", "name": "Isha", "language": "en-IN", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Sangeeta", "name": "Sangeeta", "language": "en-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Rishi", "name": "Rishi", "language": "en-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Moira", "name": "Moira", "language": "en-IE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tessa", "name": "Tessa", "language": "en-ZA", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Fiona", "name": "Fiona", "language": "en-GB-u-sd-gbsct", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Female Google voice (US)", "name": "Google US English", "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female Google voice (UK)", "name": "Google UK English Female", "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male Google voice (UK)", "name": "Google UK English Male", "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Zira", "name": "Microsoft Zira - English (United States)", "language": "en-US", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "David", "name": "Microsoft David - English (United States)", "language": "en-US", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mark", "name": "Microsoft Mark - English (United States)", "language": "en-US", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hazel", "name": "Microsoft Hazel - English (Great Britain)", "language": "en-GB", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Susan", "name": "Microsoft Susan - English (Great Britain)", "language": "en-GB", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "George", "name": "Microsoft George - English (Great Britain)", "language": "en-GB", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Catherine", "name": "Microsoft Catherine - English (Austalia)", "language": "en-AU", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "James", "name": "Microsoft Richard - English (Australia)", "language": "en-AU", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Linda", "name": "Microsoft Linda - English (Canada)", "language": "en-CA", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Richard", "name": "Microsoft Richard - English (Canada)", "language": "en-CA", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Heera", "name": "Microsoft Heera - English (India)", "language": "en-IN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ravi", "name": "Microsoft Ravi - English (India)", "language": "en-IN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sean", "name": "Microsoft Sean - English (Ireland)", "language": "en-IE", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (US)", "name": "Google US English 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-tpc-network", "Chrome OS US English 5", "Android Speech Recognition and Synthesis from Google en-us-x-tpc-local", "Android Speech Recognition and Synthesis from Google en-US-language"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (US)", "name": "Google US English 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iob-network", "Chrome OS US English 1", "Android Speech Recognition and Synthesis from Google en-us-x-iob-local"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 3 (US)", "name": "Google US English 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iog-network", "Chrome OS US English 2", "Android Speech Recognition and Synthesis from Google en-us-x-iog-local"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 4 (US)", "name": "Google US English 7 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-tpf-network", "Chrome OS US English 7", "Android Speech Recognition and Synthesis from Google en-us-x-tpf-local"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 5 (US)", "name": "Android Speech Recognition and Synthesis from Google en-us-x-sfg-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-sfg-local"], "language": "en-US", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 6 (US)", "name": "Chrome OS US English 8", "language": "en-US", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (US)", "name": "Google US English 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iom-network", "Chrome OS US English 4", "Android Speech Recognition and Synthesis from Google en-us-x-iom-local"], "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (US)", "name": "Google US English 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iol-network", "Chrome OS US English 3", "Android Speech Recognition and Synthesis from Google en-us-x-iol-local"], "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 3 (US)", "name": "Google US English 6 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-tpd-network", "Chrome OS US English 6", "Android Speech Recognition and Synthesis from Google en-us-x-tpd-local"], "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (UK)", "name": "Google UK English 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gba-network", "Chrome OS UK English 2", "Android Speech Recognition and Synthesis from Google en-gb-x-gba-local", "Android Speech Recognition and Synthesis from Google en-GB-language"], "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (UK)", "name": "Google UK English 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbc-network", "Chrome OS UK English 4", "Android Speech Recognition and Synthesis from Google en-gb-x-gbc-local"], "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 3 (UK)", "name": "Google UK English 6 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbg-network", "Chrome OS UK English 6", "Android Speech Recognition and Synthesis from Google en-gb-x-gbg-local"], "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 4 (UK)", "name": "Chrome OS UK English 7", "language": "en-GB", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (UK)", "name": "Google UK English 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-rjs-network", "Chrome OS UK English 1", "Android Speech Recognition and Synthesis from Google en-gb-x-rjs-local"], "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (UK)", "name": "Google UK English 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbb-network", "Chrome OS UK English 3", "Android Speech Recognition and Synthesis from Google en-gb-x-gbb-local"], "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 3 (UK)", "name": "Google UK English 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbd-network", "Chrome OS UK English 5", "Android Speech Recognition and Synthesis from Google en-gb-x-gbd-local"], "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (Australia)", "name": "Google Australian English 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-aua-network", "Chrome OS Australian English 1", "Android Speech Recognition and Synthesis from Google en-au-x-aua-local", "Android Speech Recognition and Synthesis from Google en-AU-language"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (Australia)", "name": "Google Australian English 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-auc-network", "Chrome OS Australian English 3", "Android Speech Recognition and Synthesis from Google en-au-x-auc-local"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (Australia)", "name": "Google Australian English 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-aub-network", "Chrome OS Australian English 2", "Android Speech Recognition and Synthesis from Google en-au-x-aub-local"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (Australia)", "name": "Google Australian English 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-aud-network", "Chrome OS Australian English 4", "Android Speech Recognition and Synthesis from Google en-au-x-aud-local"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 3 (Australia)", "name": "Chrome OS Australian English 5", "language": "en-AU", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-ena-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-ena-local", "Android Speech Recognition and Synthesis from Google en-IN-language"], "language": "en-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-enc-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-enc-local"], "language": "en-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-end-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-end-local"], "language": "en-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-ene-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-ene-local"], "language": "en-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Elvira", "name": "Microsoft Elvira Online (Natural) - Spanish (Spain)", "language": "es-ES", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Alvaro", "name": "Microsoft Alvaro Online (Natural) - Spanish (Spain)", "language": "es-ES", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dalia", "name": "Microsoft Dalia Online (Natural) - Spanish (Mexico)", "language": "es-MX", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Microsoft Jorge", "name": "Microsoft Jorge Online (Natural) - Spanish (Mexico)", "language": "es-MX", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Elena", "name": "Microsoft Elena Online (Natural) - Spanish (Argentina)", "language": "es-AR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tomas", "name": "Microsoft Tomas Online (Natural) - Spanish (Argentina)", "language": "es-AR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sofia", "name": "Microsoft Sofia Online (Natural) - Spanish (Bolivia)", "language": "es-BO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marcelo", "name": "Microsoft Marcelo Online (Natural) - Spanish (Bolivia)", "language": "es-BO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Catalina", "name": "Microsoft Catalina Online (Natural) - Spanish (Chile)", "language": "es-CL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lorenzo", "name": "Microsoft Lorenzo Online (Natural) - Spanish (Chile)", "language": "es-CL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ximena", "name": "Microsoft Ximena Online (Natural) - Spanish (Colombia)", "language": "es-CO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Salome", "name": "Microsoft Salome Online (Natural) - Spanish (Colombia)", "language": "es-CO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Gonzalo", "name": "Microsoft Gonzalo Online (Natural) - Spanish (Colombia)", "language": "es-CO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maria", "name": "Microsoft Maria Online (Natural) - Spanish (Costa Rica)", "language": "es-CR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Juan", "name": "Microsoft Juan Online (Natural) - Spanish (Costa Rica)", "language": "es-CR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Belkys", "name": "Microsoft Belkys Online (Natural) - Spanish (Cuba)", "language": "es-CU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Manuel", "name": "Microsoft Manuel Online (Natural) - Spanish (Cuba)", "language": "es-CU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Andrea", "name": "Microsoft Andrea Online (Natural) - Spanish (Ecuador)", "language": "es-EC", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Luis", "name": "Microsoft Luis Online (Natural) - Spanish (Ecuador)", "language": "es-EC", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lorena", "name": "Microsoft Lorena Online (Natural) - Spanish (El Salvador)", "language": "es-SV", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rodrigo", "name": "Microsoft Rodrigo Online (Natural) - Spanish (El Salvador)", "language": "es-SV", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Paloma", "name": "Microsoft Paloma Online (Natural) - Spanish (United States)", "language": "es-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Alonso", "name": "Microsoft Alonso Online (Natural) - Spanish (United States)", "language": "es-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marta", "name": "Microsoft Marta Online (Natural) - Spanish (Guatemala)", "language": "es-GT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Andres", "name": "Microsoft Andres Online (Natural) - Spanish (Guatemala)", "language": "es-GT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Teresa", "name": "Microsoft Teresa Online (Natural) - Spanish (Equatorial Guinea)", "language": "es-GQ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Javier", "name": "Microsoft Javier Online (Natural) - Spanish (Equatorial Guinea)", "language": "es-GQ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Karla", "name": "Microsoft Karla Online (Natural) - Spanish (Honduras)", "language": "es-HN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Carlos", "name": "Microsoft Carlos Online (Natural) - Spanish (Honduras)", "language": "es-HN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yolanda", "name": "Microsoft Yolanda Online (Natural) - Spanish (Nicaragua)", "language": "es-NI", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Federico", "name": "Microsoft Federico Online (Natural) - Spanish (Nicaragua)", "language": "es-NI", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Margarita", "name": "Microsoft Margarita Online (Natural) - Spanish (Panama)", "language": "es-PA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Roberto", "name": "Microsoft Roberto Online (Natural) - Spanish (Panama)", "language": "es-PA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tania", "name": "Microsoft Tania Online (Natural) - Spanish (Paraguay)", "language": "es-PY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mario", "name": "Microsoft Mario Online (Natural) - Spanish (Paraguay)", "language": "es-PY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Camila", "name": "Microsoft Camila Online (Natural) - Spanish (Peru)", "language": "es-PE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Alex", "name": "Microsoft Alex Online (Natural) - Spanish (Peru)", "language": "es-PE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Karina", "name": "Microsoft Karina Online (Natural) - Spanish (Puerto Rico)", "language": "es-PR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Victor", "name": "Microsoft Victor Online (Natural) - Spanish (Puerto Rico)", "language": "es-PR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ramona", "name": "Microsoft Ramona Online (Natural) - Spanish (Dominican Republic)", "language": "es-DO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Emilio", "name": "Microsoft Emilio Online (Natural) - Spanish (Dominican Republic)", "language": "es-DO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Valentina", "name": "Microsoft Valentina Online (Natural) - Spanish (Uruguay)", "language": "es-UY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mateo", "name": "Microsoft Mateo Online (Natural) - Spanish (Uruguay)", "language": "es-UY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Paola", "name": "Microsoft Paola Online (Natural) - Spanish (Venezuela)", "language": "es-VE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sebastian", "name": "Microsoft Sebastian Online (Natural) - Spanish (Venezuela)", "language": "es-VE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marisol", "name": "Marisol", "language": "es-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Mónica", "name": "Mónica", "language": "es-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Apple Jorge", "name": "Jorge", "language": "es-ES", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Angelica", "name": "Angelica", "language": "es-MX", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Paulina", "name": "Paulina", "language": "es-MX", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Juan", "name": "Juan", "language": "es-MX", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Isabela", "name": "Isabela", "language": "es-AR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Diego", "name": "Diego", "language": "es-AR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Francisca", "name": "Francisca", "language": "es-CL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Soledad", "name": "Soledad", "language": "es-CO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jimena", "name": "Jimena", "language": "es-CO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Carlos", "name": "Carlos", "language": "es-CO", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voz Google masculina (España)", "name": "Google español", "language": "es-ES", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz Google femenina (Estados Unidos)", "name": "Google español de Estados Unidos", "language": "es-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Helena", "name": "Microsoft Helena - Spanish (Spain)", "language": "es-ES", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Laura", "name": "Microsoft Laura - Spanish (Spain)", "language": "es-ES", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pablo", "name": "Microsoft Pablo - Spanish (Spain)", "language": "es-ES", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sabina", "name": "Microsoft Sabina - Spanish (Mexico)", "language": "es-MX", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Raul", "name": "Microsoft Raul - Spanish (Mexico)", "language": "es-MX", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 1 (España)", "name": "Google español 4 (Natural)", "altNames": ["Chrome OS español 4", "Android Speech Recognition and Synthesis from Google es-es-x-eee-local", "Android Speech Recognition and Synthesis from Google es-ES-language"], "language": "es-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 2 (España)", "name": "Google español 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-es-x-eea-network", "Chrome OS español 1", "Android Speech Recognition and Synthesis from Google es-es-x-eea-local"], "language": "es-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 3 (España)", "name": "Google español 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-es-x-eec-network", "Chrome OS español 2", "Android Speech Recognition and Synthesis from Google es-es-x-eec-local"], "language": "es-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 1 (España)", "name": "Google español 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-es-x-eed-network", "Chrome OS español 3", "Android Speech Recognition and Synthesis from Google es-es-x-eed-local"], "language": "es-ES", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 2 (España)", "name": "Google español 5 (Natural)", "altNames": ["Chrome OS español 5", "Android Speech Recognition and Synthesis from Google es-es-x-eef-local"], "language": "es-ES", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 1 (Estados Unidos)", "name": "Google español de Estados Unidos 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-esc-network", "Chrome OS español de Estados Unidos", "Android Speech Recognition and Synthesis from Google es-us-x-esc-local", "Android Speech Recognition and Synthesis from Google es-US-language"], "language": "es-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 2 (Estados Unidos)", "name": "Google español de Estados Unidos 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-sfb-network", "Android Speech Recognition and Synthesis from Google es-us-x-sfb-local"], "language": "es-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 1 (Estados Unidos)", "name": "Google español de Estados Unidos 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-esd-network", "Android Speech Recognition and Synthesis from Google es-us-x-esd-local"], "language": "es-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 2 (Estados Unidos)", "name": "Google español de Estados Unidos 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-esf-network", "Android Speech Recognition and Synthesis from Google es-us-x-esf-local"], "language": "es-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Miren", "name": "Miren", "language": "eu-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Dilara", "name": "Microsoft Dilara Online (Natural) - Persian (Iran)", "language": "fa-IR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Farid", "name": "Microsoft Farid Online (Natural) - Persian (Iran)", "language": "fa-IR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dariush", "name": "Dariush", "language": "fa-IR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Noora", "name": "Microsoft Noora Online (Natural) - Finnish (Finland)", "language": "fi-FI", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Harri", "name": "Microsoft Harri Online (Natural) - Finnish (Finland)", "language": "fi-FI", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Satu", "name": "Satu", "language": "fi-FI", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Onni", "name": "Onni", "language": "fi-FI", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Heidi", "name": "Microsoft Heidi - Finnish (Finland)", "language": "fi-FI", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suomalainen naisääni", "name": "Google Suomi (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fi-fi-x-afi-network", "Chrome OS Suomi", "Android Speech Recognition and Synthesis from Google fi-fi-x-afi-local", "Android Speech Recognition and Synthesis from Google fi-FI-language"], "language": "fi-FI", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vivienne", "name": "Microsoft VivienneMultilingual Online (Natural) - French (France)", "language": "fr-FR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Denise", "name": "Microsoft Denise Online (Natural) - French (France)", "language": "fr-FR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Charline", "name": "Microsoft Charline Online (Natural) - French (Belgium)", "language": "fr-BE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ariane", "name": "Microsoft Ariane Online (Natural) - French (Switzerland)", "language": "fr-CH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Eloise", "name": "Microsoft Eloise Online (Natural) - French (France)", "language": "fr-FR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Remy", "name": "Microsoft RemyMultilingual Online (Natural) - French (France)", "language": "fr-FR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Henri", "name": "Microsoft Henri Online (Natural) - French (France)", "language": "fr-FR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Gerard", "name": "Microsoft Gerard Online (Natural) - French (Belgium)", "language": "fr-BE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fabrice", "name": "Microsoft Fabrice Online (Natural) - French (Switzerland)", "language": "fr-CH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sylvie", "name": "Microsoft Sylvie Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Antoine", "name": "Microsoft Antoine Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jean", "name": "Microsoft Jean Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Thierry", "name": "Microsoft Thierry Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Audrey", "name": "Audrey", "language": "fr-FR", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aurélie", "name": "Aurélie", "language": "fr-FR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 0.9, "localizedName": "apple" }, { "label": "Marie", "name": "Marie", "language": "fr-FR", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Thomas", "name": "Thomas", "language": "fr-FR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aude", "name": "Aude", "language": "fr-BE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Chantal", "name": "Chantal", "language": "fr-CA", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Amélie", "name": "Amélie", "language": "fr-CA", "gender": "female", "quality": ["low", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nicolas", "name": "Nicolas", "language": "fr-CA", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voix Google féminine (France)", "name": "Google français", "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Julie", "name": "Microsoft Julie - French (France)", "language": "fr-FR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hortence", "name": "Microsoft Hortence - French (France)", "language": "fr-FR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Paul", "name": "Microsoft Paul - French (France)", "language": "fr-FR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Caroline", "name": "Microsoft Caroline - French (Canada)", "language": "fr-CA", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Claude", "name": "Microsoft Claude - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Guillaume", "name": "Microsoft Claude - French (Switzerland)", "language": "fr-CH", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 1 (France)", "name": "Google français 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-frc-network", "Chrome OS français 4", "Android Speech Recognition and Synthesis from Google fr-fr-x-frc-local", "Android Speech Recognition and Synthesis from Google fr-FR-language"], "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 2 (France)", "name": "Google français 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-fra-network", "Chrome OS français 2", "Android Speech Recognition and Synthesis from Google fr-fr-x-fra-local"], "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 3 (France)", "name": "Google français 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-vlf-network", "Chrome OS français 1", "Android Speech Recognition and Synthesis from Google fr-fr-x-vlf-local"], "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 1 (France)", "name": "Google français 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-frd-network", "Chrome OS français 5", "Android Speech Recognition and Synthesis from Google fr-fr-x-frd-local"], "language": "fr-FR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 2 (France)", "name": "Google français 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-frb-network", "Chrome OS français 3", "Android Speech Recognition and Synthesis from Google fr-fr-x-frb-local"], "language": "fr-FR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 1 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-caa-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-caa-local", "Android Speech Recognition and Synthesis from Google fr-CA-language"], "language": "fr-CA", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 2 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-cac-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-cac-local"], "language": "fr-CA", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 1 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-cab-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-cab-local"], "language": "fr-CA", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 2 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-cad-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-cad-local"], "language": "fr-CA", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sabela", "name": "Microsoft Sabela Online (Natural) - Galician (Spain)", "language": "gl-ES", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Roi", "name": "Microsoft Roi Online (Natural) - Galician (Spain)", "language": "gl-ES", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Carmela", "name": "Carmela", "language": "gl-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Hila", "name": "Microsoft Hila Online (Natural) - Hebrew (Israel)", "language": "he-IL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Avri", "name": "Microsoft Avri Online (Natural) - Hebrew (Israel)", "language": "he-IL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Carmit", "name": "Carmit", "language": "he-IL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Asaf", "name": "Microsoft Asaf - Hebrew (Israel)", "language": "he-IL", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול גברי 1", "name": "Android Speech Recognition and Synthesis from Google he-il-x-heb-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-heb-local", "Android Speech Recognition and Synthesis from Google he-IL-language"], "language": "he-IL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול גברי 2", "name": "Android Speech Recognition and Synthesis from Google he-il-x-hec-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-hec-local"], "language": "he-IL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול נשי 1", "name": "Android Speech Recognition and Synthesis from Google he-il-x-hed-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-hed-local"], "language": "he-IL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול נשי 2", "name": "Android Speech Recognition and Synthesis from Google he-il-x-hee-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-hee-local"], "language": "he-IL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Swara", "name": "Microsoft Swara Online (Natural) - Hindi (India)", "language": "hi-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Madhur", "name": "Microsoft Madhur Online (Natural) - Hindi (India)", "language": "hi-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Kiyara", "name": "Kiyara", "language": "hi-IN", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lekha", "name": "Lekha", "language": "hi-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Neel", "name": "Neel", "language": "hi-IN", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "महिला Google आवाज़", "name": "Google हिन्दी", "language": "hi-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kalpana", "name": "Microsoft Kalpana - Hindi (India)", "language": "hi-IN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hemant", "name": "Microsoft Hemant - Hindi (India)", "language": "hi-IN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "महिला आवाज़ 1", "name": "Google हिन्दी 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hia-network", "Chrome OS हिन्दी 2", "Android Speech Recognition and Synthesis from Google hi-in-x-hia-local", "Android Speech Recognition and Synthesis from Google hi-IN-language"], "language": "hi-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "महिला आवाज़ 2", "name": "Google हिन्दी 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hic-network", "Chrome OS हिन्दी 3", "Android Speech Recognition and Synthesis from Google hi-in-x-hic-local"], "language": "hi-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "महिला आवाज़ 3", "name": "Chrome OS हिन्दी 1", "language": "hi-IN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "पुरुष आवाज 1", "name": "Google हिन्दी 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hid-network", "Chrome OS हिन्दी 4", "Android Speech Recognition and Synthesis from Google hi-in-x-hid-local"], "language": "hi-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "पुरुष आवाज 2", "name": "Google हिन्दी 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hie-network", "Chrome OS हिन्दी 5", "Android Speech Recognition and Synthesis from Google hi-in-x-hie-local"], "language": "hi-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Gabrijela", "name": "Microsoft Gabrijela Online (Natural) - Croatian (Croatia)", "language": "hr-HR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Srecko", "name": "Microsoft Srecko Online (Natural) - Croatian (Croatia)", "language": "hr-HR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lana", "name": "Lana", "altNames": ["Lana (poboljšani)", "Lana (hrvatski (Hrvatska))"], "language": "hr-HR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Matej", "name": "Microsoft Matej - Croatian (Croatia)", "language": "hr-HR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženski glas", "name": "Android Speech Recognition and Synthesis from Google hr-hr-x-hra-network", "altNames": ["Android Speech Recognition and Synthesis from Google hr-hr-x-hra-local"], "language": "hr-HR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Muški glas", "name": "Android Speech Recognition and Synthesis from Google hr-hr-x-hrb-network", "altNames": ["Android Speech Recognition and Synthesis from Google hr-hr-x-hrb-local", "Android Speech Recognition and Synthesis from Google hr-HR-language"], "language": "hr-HR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Noemi", "name": "Microsoft Noemi Online (Natural) - Hungarian (Hungary)", "language": "hu-HU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tamas", "name": "Microsoft Tamas Online (Natural) - Hungarian (Hungary)", "language": "hu-HU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tünde", "name": "Tünde", "language": "hu-HU", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Szabolcs", "name": "Microsoft Szabolcs - Hungarian (Hungary)", "language": "hu-HU", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Női hang", "name": "Google Magyar (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hu-hu-x-kfl-network", "Chrome OS Magyar", "Android Speech Recognition and Synthesis from Google hu-hu-x-kfl-local", "Android Speech Recognition and Synthesis from Google hu-HU-language"], "language": "hu-HU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Gadis", "name": "Microsoft Gadis Online (Natural) - Indonesian (Indonesia)", "language": "id-ID", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ardi", "name": "Microsoft Ardi Online (Natural) - Indonesian (Indonesia)", "language": "id-ID", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Damayanti", "name": "Damayanti", "language": "id-ID", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Suara Google wanita", "name": "Google Bahasa Indonesia", "language": "id-ID", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Andika", "name": "Microsoft Andika - Indonesian (Indonesia)", "language": "id-ID", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara wanita 1", "name": "Google Bahasa Indonesia 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-idc-network", "Chrome OS Bahasa Indonesia 1", "Android Speech Recognition and Synthesis from Google id-id-x-idc-local", "Android Speech Recognition and Synthesis from Google id-ID-language"], "language": "id-ID", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara wanita 2", "name": "Google Bahasa Indonesia 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-idd-network", "Chrome OS Bahasa Indonesia 2", "Android Speech Recognition and Synthesis from Google id-id-x-idd-local"], "language": "id-ID", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara laki-laki 1", "name": "Google Bahasa Indonesia 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-ide-network", "Chrome OS Bahasa Indonesia 3", "Android Speech Recognition and Synthesis from Google id-id-x-ide-local"], "language": "id-ID", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara laki-laki 2", "name": "Google Bahasa Indonesia 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-dfz-network", "Chrome OS Bahasa Indonesia 4", "Android Speech Recognition and Synthesis from Google id-id-x-dfz-local"], "language": "id-ID", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Elsa (Alta qualita)", "name": "Microsoft Elsa Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Isabella", "name": "Microsoft Isabella Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Giuseppe", "name": "Microsoft Giuseppe Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Diego", "name": "Microsoft Diego Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Federica", "name": "Federica", "language": "it-IT", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Emma", "name": "Emma", "language": "it-IT", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Alice", "name": "Alice", "language": "it-IT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Paola", "name": "Paola", "language": "it-IT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Luca", "name": "Luca", "language": "it-IT", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voce Google femminile", "name": "Google italiano", "language": "it-IT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Elsa", "name": "Microsoft Elsa - Italian (Italy)", "language": "it-IT", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Cosimo", "name": "Microsoft Cosimo - Italian (Italy)", "language": "it-IT", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce femminile 1", "name": "Google italiano 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-itb-network", "Chrome OS italiano 2", "Android Speech Recognition and Synthesis from Google it-it-x-itb-local", "Android Speech Recognition and Synthesis from Google it-IT-language"], "language": "it-IT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce femminile 2", "name": "Google italiano 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-kda-network", "Chrome OS italiano 1", "Android Speech Recognition and Synthesis from Google it-it-x-kda-local"], "language": "it-IT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce maschile 1", "name": "Google italiano 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-itc-network", "Chrome OS italiano 3", "Android Speech Recognition and Synthesis from Google it-it-x-itc-local"], "language": "it-IT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce maschile 2", "name": "Google italiano 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-itd-network", "Chrome OS italiano 4", "Android Speech Recognition and Synthesis from Google it-it-x-itd-local"], "language": "it-IT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Nanami", "name": "Microsoft Nanami Online (Natural) - Japanese (Japan)", "language": "ja-JP", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Keita", "name": "Microsoft Keita Online (Natural) - Japanese (Japan)", "language": "ja-JP", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "O-Ren", "name": "O-Ren", "language": "ja-JP", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Kyoko", "name": "Kyoko", "language": "ja-JP", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Otoya", "name": "Otoya", "language": "ja-JP", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Hattori", "name": "Hattori", "language": "ja-JP", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google の女性の声", "name": "Google 日本語", "language": "ja-JP", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ayumi", "name": "Microsoft Ayumi - Japanese (Japan)", "language": "ja-JP", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Haruka", "name": "Microsoft Haruka - Japanese (Japan)", "language": "ja-JP", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ichiro", "name": "Microsoft Ichiro - Japanese (Japan)", "language": "ja-JP", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女性の声1", "name": "Google 日本語 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-htm-network", "Chrome OS 日本語 1", "Android Speech Recognition and Synthesis from Google ja-jp-x-htm-local", "Android Speech Recognition and Synthesis from Google ja-JP-language"], "language": "ja-JP", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女性の声2", "name": "Chrome OS 日本語 2", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-jab-network", "Android Speech Recognition and Synthesis from Google ja-jp-x-jab-local"], "language": "ja-JP", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男性の声1", "name": "Google 日本語 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-jac-network", "Chrome OS 日本語 3", "Android Speech Recognition and Synthesis from Google ja-jp-x-jac-local"], "language": "ja-JP", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男性の声2", "name": "Google 日本語 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-jad-network", "Chrome OS 日本語 4", "Android Speech Recognition and Synthesis from Google ja-jp-x-jad-local"], "language": "ja-JP", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "SunHi", "name": "Microsoft SunHi Online (Natural) - Korean (Korea)", "language": "ko-KR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hyunsu", "name": "Microsoft Hyunsu Online (Natural) - Korean (Korea)", "language": "ko-KR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "InJoon", "name": "Microsoft InJoon Online (Natural) - Korean (Korea)", "language": "ko-KR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yuna", "name": "Yuna", "language": "ko-KR", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jian", "name": "Jian", "language": "ko-KR", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Suhyun", "name": "Suhyun", "language": "ko-KR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Sora", "name": "Sora", "language": "ko-KR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Minsu", "name": "Minsu", "language": "ko-KR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google 여성 음성", "name": "Google 한국의", "language": "ko-KR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Heami", "name": "Microsoft Heami - Korean (Korea)", "language": "ko-KR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "여성 목소리 1", "name": "Google 한국어 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-kob-network", "Chrome OS 한국어 2", "Android Speech Recognition and Synthesis from Google ko-kr-x-kob-local", "Android Speech Recognition and Synthesis from Google ko-KR-language"], "language": "ko-KR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "여성 목소리 2", "name": "Google 한국어 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-ism-network", "Chrome OS 한국어 1", "Android Speech Recognition and Synthesis from Google ko-kr-x-ism-local"], "language": "ko-KR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "남성 1", "name": "Google 한국어 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-koc-network", "Chrome OS 한국어 3", "Android Speech Recognition and Synthesis from Google ko-kr-x-koc-local"], "language": "ko-KR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "남성 2", "name": "Google 한국어 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-kod-network", "Chrome OS 한국어 4", "Android Speech Recognition and Synthesis from Google ko-kr-x-kod-local"], "language": "ko-KR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Aarohi", "name": "Microsoft Aarohi Online (Natural) - Marathi (India)", "language": "mr-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Manohar", "name": "Microsoft Manohar Online (Natural) - Marathi (India)", "language": "mr-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ananya", "name": "Ananya", "language": "mr-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "स्त्री आवाज", "name": "Android Speech Recognition and Synthesis from Google mr-in-x-mrf-network", "altNames": ["Android Speech Recognition and Synthesis from Google mr-in-x-mrf-local", "Android Speech Recognition and Synthesis from Google mr-IN-language"], "language": "mr-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Yasmin", "name": "Microsoft Yasmin Online (Natural) - Malay (Malaysia)", "language": "ms-MY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Osman", "name": "Microsoft Osman Online (Natural) - Malay (Malaysia)", "language": "ms-MY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amira", "name": "Amira", "language": "ms-MY", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Rizwan", "name": "Microsoft Rizwan - Malay (Malaysia)", "language": "ms-MY", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara perempuan 1", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-msc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-msc-local", "Android Speech Recognition and Synthesis from Google ms-MY-language"], "language": "ms-MY", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara perempuan 2", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-mse-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-mse-local"], "language": "ms-MY", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara lelaki 1", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-msd-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-msd-local"], "language": "ms-MY", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara lelaki 2", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-msg-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-msg-local"], "language": "ms-MY", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pernille", "name": "Microsoft Pernille Online (Natural) - Norwegian (Bokmål, Norway)", "language": "nb-NO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Finn", "name": "Microsoft Finn Online (Natural) - Norwegian (Bokmål Norway)", "language": "nb-NO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Nora", "name": "Nora", "language": "nb-NO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Henrik", "name": "Henrik", "language": "nb-NO", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jon", "name": "Microsoft Jon - Norwegian (Bokmål Norway)", "language": "nb-NO", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnestemme 1", "name": "Google Norsk Bokmål 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-cfl-network", "Chrome OS Norsk Bokmål 2", "Android Speech Recognition and Synthesis from Google nb-no-x-cfl-local", "Android Speech Recognition and Synthesis from Google nb-NO-language"], "language": "nb-NO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnestemme 2", "name": "Google Norsk Bokmål 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-rfj-network", "Chrome OS Norsk Bokmål 1", "Android Speech Recognition and Synthesis from Google nb-no-x-rfj-local"], "language": "nb-NO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnestemme 3", "name": "Google Norsk Bokmål 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-tfs-network", "Chrome OS Norsk Bokmål 4", "Android Speech Recognition and Synthesis from Google nb-no-x-tfs-local"], "language": "nb-NO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannsstemme 1", "name": "Google Norsk Bokmål 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-cmj-network", "Chrome OS Norsk Bokmål 3", "Android Speech Recognition and Synthesis from Google nb-no-x-cmj-local"], "language": "nb-NO", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannsstemme 2", "name": "Google Norsk Bokmål 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-tmg-network", "Chrome OS Norsk Bokmål 5", "Android Speech Recognition and Synthesis from Google nb-no-x-tmg-local"], "language": "nb-NO", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Colette", "name": "Microsoft Colette Online (Natural) - Dutch (Netherlands)", "language": "nl-NL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fenna", "name": "Microsoft Fenna Online (Natural) - Dutch (Netherlands)", "language": "nl-NL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hanna", "name": "Microsoft Hanna Online - Dutch (Netherlands)", "language": "nl-NL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maarten", "name": "Microsoft Maarten Online (Natural) - Dutch (Netherlands)", "language": "nl-NL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dena", "name": "Microsoft Dena Online (Natural) - Dutch (Belgium)", "language": "nl-BE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Arnaud", "name": "Microsoft Arnaud Online (Natural) - Dutch (Belgium)", "language": "nl-BE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Claire", "name": "Claire", "language": "nl-NL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Xander", "name": "Xander", "language": "nl-NL", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Ellen", "name": "Ellen", "language": "nl-BE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google mannelijke stem", "name": "Google Nederlands", "language": "nl-NL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Frank", "name": "Microsoft Frank - Dutch (Netherlands)", "language": "nl-NL", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem 1 (Nederland)", "name": "Google Nederlands 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-lfc-network", "Chrome OS Nederlands 4", "Android Speech Recognition and Synthesis from Google nl-nl-x-lfc-local", "Android Speech Recognition and Synthesis from Google nl-NL-language"], "language": "nl-NL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem 2 (Nederland)", "name": "Google Nederlands 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-tfb-network", "Chrome OS Nederlands 1", "Android Speech Recognition and Synthesis from Google nl-nl-x-tfb-local"], "language": "nl-NL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem 3 (Nederland)", "name": "Google Nederlands 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-yfr-network", "Chrome OS Nederlands 5", "Android Speech Recognition and Synthesis from Google nl-nl-x-yfr-local"], "language": "nl-NL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannelijke stem 1 (Nederland)", "name": "Google Nederlands 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-bmh-network", "Chrome OS Nederlands 2", "Android Speech Recognition and Synthesis from Google nl-nl-x-bmh-local"], "language": "nl-NL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannelijke stem 2 (Nederland)", "name": "Google Nederlands 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-dma-network", "Chrome OS Nederlands 3", "Android Speech Recognition and Synthesis from Google nl-nl-x-dma-local"], "language": "nl-NL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem (België)", "name": "Android Speech Recognition and Synthesis from Google nl-be-x-bec-network", "altNames": ["Android Speech Recognition and Synthesis from Google nl-be-x-bec-local", "Android Speech Recognition and Synthesis from Google nl-BE-language"], "language": "nl-BE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannelijke stem (België)", "name": "Android Speech Recognition and Synthesis from Google nl-be-x-bed-network", "altNames": ["Android Speech Recognition and Synthesis from Google nl-be-x-bed-local"], "language": "nl-BE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Zofia", "name": "Microsoft Zofia Online (Natural) - Polish (Poland)", "language": "pl-PL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Paulina", "name": "Microsoft Paulina Online - Polish (Poland)", "language": "pl-PL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marek", "name": "Microsoft Marek Online (Natural) - Polish (Poland)", "language": "pl-PL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ewa", "name": "Ewa", "language": "pl-PL", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Zosia", "name": "Zosia", "language": "pl-PL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Krzysztof", "name": "Krzysztof", "language": "pl-PL", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Żeński głos Google’a", "name": "Google polski", "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Paulina", "name": "Microsoft Paulina - Polish (Poland)", "language": "pl-PL", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Adam", "name": "Microsoft Adam - Polish (Poland)", "language": "pl-PL", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos żeński 1", "name": "Google Polski 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-afb-network", "Chrome OS Polski 2", "Android Speech Recognition and Synthesis from Google pl-pl-x-afb-local", "Android Speech Recognition and Synthesis from Google pl-PL-language"], "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos żeński 2", "name": "Google Polski 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-oda-network", "Chrome OS Polski 1", "Android Speech Recognition and Synthesis from Google pl-pl-x-oda-local"], "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos żeński 3", "name": "Google Polski 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-zfg-network", "Chrome OS Polski 5", "Android Speech Recognition and Synthesis from Google pl-pl-x-zfg-local"], "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos męski 1", "name": "Google Polski 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-bmg-network", "Chrome OS Polski 3", "Android Speech Recognition and Synthesis from Google pl-pl-x-bmg-local"], "language": "pl-PL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos męski 2", "name": "Google Polski 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-jmk-network", "Chrome OS Polski 4", "Android Speech Recognition and Synthesis from Google pl-pl-x-jmk-local"], "language": "pl-PL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Raquel", "name": "Microsoft Raquel Online (Natural) - Portuguese (Portugal)", "language": "pt-PT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Duarte", "name": "Microsoft Duarte Online (Natural) - Portuguese (Portugal)", "language": "pt-PT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Francisca", "name": "Microsoft Francisca Online (Natural) - Portuguese (Brazil)", "language": "pt-BR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Thalita", "name": "Microsoft Thalita Online (Natural) - Portuguese (Brazil)", "language": "pt-BR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Antonio", "name": "Microsoft Antonio Online (Natural) - Portuguese (Brazil)", "language": "pt-BR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Catarina", "name": "Catarina", "language": "pt-PT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Joana", "name": "Joana", "language": "pt-PT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Joaquim", "name": "Joaquim", "language": "pt-PT", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Fernanda", "name": "Fernanda", "language": "pt-BR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Luciana", "name": "Luciana", "language": "pt-BR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Felipe", "name": "Felipe", "language": "pt-BR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voz Google (Brasil)", "name": "Google português do Brasil", "language": "pt-BR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Helia", "name": "Microsoft Helia - Portuguese (Portugal)", "language": "pt-PT", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Maria", "name": "Microsoft Maria - Portuguese (Brazil)", "language": "pt-BR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Daniel", "name": "Microsoft Daniel - Portuguese (Brazil)", "language": "pt-BR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 1 (Portugal)", "name": "Google português de Portugal 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-jfb-network", "Android Speech Recognition and Synthesis from Google pt-pt-x-jfb-local", "Android Speech Recognition and Synthesis from Google pt-PT-language"], "language": "pt-PT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 2 (Portugal)", "name": "Google português de Portugal 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-sfs-network", "Chrome OS português de Portugal", "Android Speech Recognition and Synthesis from Google pt-pt-x-sfs-local"], "language": "pt-PT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 1 (Portugal)", "name": "Google português de Portugal 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-jmn-network", "Android Speech Recognition and Synthesis from Google pt-pt-x-jmn-local"], "language": "pt-PT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 2 (Portugal)", "name": "Google português de Portugal 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-pmj-network", "Android Speech Recognition and Synthesis from Google pt-pt-x-pmj-local"], "language": "pt-PT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 1 (Brasil)", "name": "Google português do Brasil 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-br-x-afs-network", "Chrome OS português do Brasil", "Android Speech Recognition and Synthesis from Google pt-br-x-afs-local", "Android Speech Recognition and Synthesis from Google pt-BR-language"], "language": "pt-BR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 2 (Brasil)", "name": "Google português do Brasil 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-br-x-pte-network", "Android Speech Recognition and Synthesis from Google pt-br-x-pte-local"], "language": "pt-BR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina (Brasil)", "name": "Google português do Brasil 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-br-x-ptd-network", "Android Speech Recognition and Synthesis from Google pt-br-x-ptd-local"], "language": "pt-BR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Alina", "name": "Microsoft Alina Online (Natural) - Romanian (Romania)", "language": "ro-RO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Emil", "name": "Microsoft Emil Online (Natural) - Romanian (Romania)", "language": "ro-RO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ioana", "name": "Ioana", "language": "ro-RO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Andrei", "name": "Microsoft Andrei - Romanian (Romania)", "language": "ro-RO", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce feminină", "name": "Android Speech Recognition and Synthesis from Google ro-ro-x-vfv-network", "altNames": ["Android Speech Recognition and Synthesis from Google ro-ro-x-vfv-local", "Android Speech Recognition and Synthesis from Google ro-RO-language"], "language": "ro-RO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Svetlana", "name": "Microsoft Svetlana Online (Natural) - Russian (Russia)", "language": "ru-RU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ekaterina", "name": "Microsoft Ekaterina Online - Russian (Russia)", "language": "ru-RU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dmitry", "name": "Microsoft Dmitry Online (Natural) - Russian (Russia)", "language": "ru-RU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Katya", "name": "Katya", "language": "ru-RU", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Milena", "name": "Milena", "language": "ru-RU", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yuri", "name": "Yuri", "language": "ru-RU", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google женский голос", "name": "Google русский", "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Irina", "name": "Microsoft Irina - Russian (Russian)", "language": "ru-RU", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pavel", "name": "Microsoft Pavel - Russian (Russian)", "language": "ru-RU", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женский голос 1", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-dfc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-dfc-local"], "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женский голос 2", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-ruc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-ruc-local"], "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женский голос 3", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-rue-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-rue-local"], "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Мужской голос 1", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-rud-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-rud-local"], "language": "ru-RU", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Мужской голос 2", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-ruf-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-ruf-local"], "language": "ru-RU", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Viktoria", "name": "Microsoft Viktoria Online (Natural) - Slovak (Slovakia)", "language": "sk-SK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lukas", "name": "Microsoft Lukas Online (Natural) - Slovak (Slovakia)", "language": "sk-SK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Laura", "name": "Laura", "language": "sk-SK", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Filip", "name": "Microsoft Filip - Slovak (Slovakia)", "language": "sk-SK", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženský hlas", "name": "Google Slovenčina (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sk-sk-x-sfk-network", "Android Speech Recognition and Synthesis from Google sk-sk-x-sfk-local", "Chrome OS Slovenčina", "Android Speech Recognition and Synthesis from Google sk-SK-language"], "language": "sk-SK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Petra", "name": "Microsoft Petra Online (Natural) - Slovenian (Slovenia)", "language": "sl-SI", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rok", "name": "Microsoft Rok Online (Natural) - Slovenian (Slovenia)", "language": "sl-SI", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tina", "name": "Tina", "language": "sl-SI", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lado", "name": "Microsoft Lado - Slovenian (Slovenia)", "language": "sl-SI", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženski glas", "name": "Android Speech Recognition and Synthesis from Google sl-si-x-frm-local", "altNames": ["Android Speech Recognition and Synthesis from Google sl-SI-language"], "language": "sl-SI", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sofie", "name": "Microsoft Sofie Online (Natural) - Swedish (Sweden)", "language": "sv-SE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mattias", "name": "Microsoft Mattias Online (Natural) - Swedish (Sweden)", "language": "sv-SE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Klara", "name": "Klara", "language": "sv-SE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Alva", "name": "Alva", "language": "sv-SE", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Oskar", "name": "Oskar", "language": "sv-SE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Bengt", "name": "Microsoft Bengt - Swedish (Sweden)", "language": "sv-SE", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnlig röst 1", "name": "Google Svenska 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-lfs-network", "Chrome OS Svenska", "Android Speech Recognition and Synthesis from Google sv-se-x-lfs-local", "Android Speech Recognition and Synthesis from Google sv-SE-language"], "language": "sv-SE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnlig röst 2", "name": "Google Svenska 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-afp-network", "Android Speech Recognition and Synthesis from Google sv-se-x-afp-local"], "language": "sv-SE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnlig röst 3", "name": "Google Svenska 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-cfg-network", "Android Speech Recognition and Synthesis from Google sv-se-x-cfg-local"], "language": "sv-SE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mansröst 1", "name": "Google Svenska 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-cmh-network", "Android Speech Recognition and Synthesis from Google sv-se-x-cmh-local"], "language": "sv-SE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mansröst 2", "name": "Google Svenska 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-dmc-network", "Android Speech Recognition and Synthesis from Google sv-se-x-dmc-local"], "language": "sv-SE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pallavi", "name": "Microsoft Pallavi Online (Natural) - Tamil (India)", "language": "ta-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Valluvar", "name": "Microsoft Valluvar Online (Natural) - Tamil (India)", "language": "ta-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Saranya", "name": "Microsoft Saranya Online (Natural) - Tamil (Sri Lanka)", "language": "ta-LK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Kumar", "name": "Microsoft Kumar Online (Natural) - Tamil (Sri Lanka)", "language": "ta-LK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Kani", "name": "Microsoft Kani Online (Natural) - Tamil (Malaysia)", "language": "ta-MY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Surya", "name": "Microsoft Surya Online (Natural) - Tamil (Malaysia)", "language": "ta-MY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Venba", "name": "Microsoft Venba Online (Natural) - Tamil (Singapore)", "language": "ta-SG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Anbu", "name": "Microsoft Anbu Online (Natural) - Tamil (Singapore)", "language": "ta-SG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Vani", "name": "Vani", "language": "ta-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Valluvar", "name": "Microsoft Valluvar - Tamil (India)", "language": "ta-IN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "பெண் குரல்", "name": "Android Speech Recognition and Synthesis from Google ta-in-x-tac-network", "altNames": ["Android Speech Recognition and Synthesis from Google ta-in-x-tac-local", "Android Speech Recognition and Synthesis from Google ta-IN-language"], "language": "ta-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "ஆண் குரல்", "name": "Android Speech Recognition and Synthesis from Google ta-in-x-tad-network", "altNames": ["Android Speech Recognition and Synthesis from Google ta-in-x-tad-local"], "language": "ta-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Shruti", "name": "Microsoft Shruti Online (Natural) - Telugu (India)", "language": "te-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mohan", "name": "Microsoft Mohan Online (Natural) - Telugu (India)", "language": "te-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Geeta", "name": "Geeta", "language": "te-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "స్త్రీ స్వరం", "name": "Android Speech Recognition and Synthesis from Google te-in-x-tef-network", "altNames": ["Android Speech Recognition and Synthesis from Google te-in-x-tef-local", "Android Speech Recognition and Synthesis from Google te-IN-language"], "language": "te-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "పురుష స్వరం", "name": "Android Speech Recognition and Synthesis from Google te-in-x-tem-network", "altNames": ["Android Speech Recognition and Synthesis from Google te-in-x-tem-local"], "language": "te-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Premwadee", "name": "Microsoft Premwadee Online (Natural) - Thai (Thailand)", "language": "th-TH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Niwat", "name": "Microsoft Niwat Online (Natural) - Thai (Thailand)", "language": "th-TH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Narisa", "name": "Narisa", "language": "th-TH", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Kanya", "name": "Kanya", "language": "th-TH", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Pattara", "name": "Microsoft Pattara - Thai (Thailand)", "language": "th-TH", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "เสียงผู้หญิง", "name": "Google ไทย (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google th-th-x-mol-network", "Chrome OS ไทย", "Android Speech Recognition and Synthesis from Google th-th-x-mol-local", "Android Speech Recognition and Synthesis from Google th-TH-language"], "language": "th-TH", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Emel", "name": "Microsoft Emel Online (Natural) - Turkish (Turkey)", "language": "tr-TR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ahmet", "name": "Microsoft Ahmet Online (Natural) - Turkish (Turkey)", "language": "tr-TR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yelda", "name": "Yelda", "altNames": ["Yelda (Geliştirilmiş)", "Yelda (Türkçe (Türkiye))"], "language": "tr-TR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Cem", "name": "Cem", "language": "tr-TR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tolga", "name": "Microsoft Tolga - Turkish (Turkey)", "language": "tr-TR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kadın sesi 1", "name": "Google Türkçe 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-network", "Chrome OS Türkçe 3", "Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-local", "Android Speech Recognition and Synthesis from Google tr-TR-language"], "language": "tr-TR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kadın sesi 2", "name": "Google Türkçe 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-efu-network", "Chrome OS Türkçe 4", "Android Speech Recognition and Synthesis from Google tr-tr-x-efu-local"], "language": "tr-TR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kadın sesi 3", "name": "Google Türkçe 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-network", "Chrome OS Türkçe 1", "Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-local"], "language": "tr-TR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Erkek sesi 1", "name": "Google Türkçe 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-ama-network", "Chrome OS Türkçe 2", "Android Speech Recognition and Synthesis from Google tr-tr-x-ama-local"], "language": "tr-TR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Erkek sesi 2", "name": "Google Türkçe 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-network", "Chrome OS Türkçe 5", "Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-local"], "language": "tr-TR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Polina", "name": "Microsoft Polina Online (Natural) - Ukrainian (Ukraine)", "language": "uk-UA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ostap", "name": "Microsoft Ostap Online (Natural) - Ukrainian (Ukraine)", "language": "uk-UA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lesya", "name": "Lesya", "language": "uk-UA", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Жіночий голос", "name": "Google українська (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-network", "Chrome OS українська", "Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-local", "Android Speech Recognition and Synthesis from Google uk-UA-language"], "language": "uk-UA", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "HoaiMy", "name": "Microsoft HoaiMy Online (Natural) - Vietnamese (Vietnam)", "language": "vi-VN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "NamMinh", "name": "Microsoft NamMinh Online (Natural) - Vietnamese (Vietnam)", "language": "vi-VN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Linh", "name": "Linh", "language": "vi-VN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "An", "name": "Microsoft An - Vietnamese (Vietnam)", "language": "vi-VN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nữ 1", "name": "Google Tiếng Việt 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vic-network", "Chrome OS Tiếng Việt 1", "Android Speech Recognition and Synthesis from Google vi-vn-x-vic-local", "Android Speech Recognition and Synthesis from Google vi-VN-language"], "language": "vi-VN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nữ 2", "name": "Google Tiếng Việt 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vid-network", "Chrome OS Tiếng Việt 2", "Android Speech Recognition and Synthesis from Google vi-vn-x-vid-local"], "language": "vi-VN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nữ 3", "name": "Google Tiếng Việt 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vif-network", "Chrome OS Tiếng Việt 4", "Android Speech Recognition and Synthesis from Google vi-vn-x-vif-local"], "language": "vi-VN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nam 1", "name": "Google Tiếng Việt 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vie-network", "Chrome OS Tiếng Việt 3", "Android Speech Recognition and Synthesis from Google vi-vn-x-vie-local"], "language": "vi-VN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nam 2", "name": "Google Tiếng Việt 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-gft-network", "Chrome OS Tiếng Việt 5", "Android Speech Recognition and Synthesis from Google vi-vn-x-gft-local"], "language": "vi-VN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Nannan", "name": "Nannan", "language": "wuu-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "HiuGaai", "name": "Microsoft HiuGaai Online (Natural) - Chinese (Cantonese Traditional)", "language": "yue-HK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "HiuMaan", "name": "Microsoft HiuMaan Online (Natural) - Chinese (Hong Kong)", "language": "yue-HK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "WanLung", "name": "Microsoft WanLung Online (Natural) - Chinese (Hong Kong)", "language": "yue-HK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sinji", "name": "Sinji", "language": "yue-HK", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aasing", "name": "Aasing", "language": "yue-HK", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tracy", "name": "Microsoft Tracy - Chinese (Traditional, Hong Kong S.A.R.)", "language": "cmn-HK", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Danny", "name": "Microsoft Danny - Chinese (Traditional, Hong Kong S.A.R.)", "language": "cmn-HK", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女聲1", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-jar-network", "altNames": ["Chrome OS 粵語 1", "Android Speech Recognition and Synthesis from Google yue-HK-x-jar-local", "Android Speech Recognition and Synthesis from Google yue-HK-language"], "language": "yue-HK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女聲2", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yuc-network", "altNames": ["Chrome OS 粵語 2", "Android Speech Recognition and Synthesis from Google yue-HK-x-yuc-local"], "language": "yue-HK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲1", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yud-network", "altNames": ["Chrome OS 粵語 3", "Android Speech Recognition and Synthesis from Google yue-HK-x-yud-local"], "language": "yue-HK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲2", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yue-network", "altNames": ["Chrome OS 粵語 5", "Android Speech Recognition and Synthesis from Google yue-HK-x-yue-local"], "language": "yue-HK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲3", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yuf-network", "altNames": ["Chrome OS 粵語 5", "Android Speech Recognition and Synthesis from Google yue-HK-x-yuf-local"], "language": "yue-HK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }];
-exports.quality = { "ar": { "normal": "محسن", "high": "استثنائي" }, "ca": { "normal": "millorada", "high": "prèmium" }, "cmn-CN": { "normal": "优化音质", "high": "高音质" }, "cmn-TW": { "normal": "增強音質", "high": "高音質" }, "cs": { "normal": "vylepšená verze", "high": "prémiový" }, "da": { "normal": "forbedret", "high": "høj kvalitet" }, "de": { "normal": "erweitert", "high": "premium" }, "el": { "normal": "βελτιωμένη", "high": "υψηλής ποιότητας" }, "en": { "normal": "Enhanced", "high": "Premium" }, "es": { "normal": "mejorada", "high": "premium" }, "fi": { "normal": "parannettu", "high": "korkealaatuinen" }, "fr": { "normal": "premium", "high": "de qualité" }, "he": { "normal": "משופר", "high": "פרימיום" }, "hi": { "normal": "बेहतर", "high": "प्रीमियम" }, "hr": { "normal": "poboljšani", "high": "vrhunski" }, "hu": { "normal": "továbbfejlesztett", "high": "prémium" }, "id": { "normal": "Ditingkatkan", "high": "Premium" }, "it": { "normal": "ottimizzata", "high": "premium" }, "ja": { "normal": "拡張", "high": "プレミアム" }, "ko": { "normal": "고품질", "high": "프리미엄" }, "ms": { "normal": "Dipertingkat", "high": "Premium" }, "nb": { "normal": "forbedret", "high": "premium" }, "nl": { "normal": "verbeterd", "high": "premium" }, "pl": { "normal": "rozszerzony", "high": "premium" }, "pt": { "normal": "melhorada", "high": "premium" }, "ro": { "normal": "îmbunătățită", "high": "premium" }, "ru": { "normal": "улучшенный", "high": "высшее качество" }, "sk": { "normal": "vylepšený", "high": "prémiový" }, "sl": { "normal": "izboljšano", "high": "prvovrsten" }, "sv": { "normal": "förbättrad", "high": "premium" }, "th": { "normal": "คุณภาพสูง", "high": "คุณภาพสูง" }, "tr": { "normal": "Geliştirilmiş", "high": "Yüksek Kaliteli" }, "uk": { "normal": "вдосконалений", "high": "високої якості" }, "vi": { "normal": "Nâng cao", "high": "Cao cấp" } };
-exports.defaultRegion = { "ar": "ar-SA", "bg": "bg-BG", "bho": "bho-IN", "bn": "bn-IN", "ca": "ca-ES", "cmn": "cmn-CN", "cs": "cs-CZ", "da": "da-DK", "de": "de-DE", "el": "el-GR", "en": "en-US", "es": "es-ES", "eu": "eu-ES", "fa": "fa-IR", "fi": "fi-FI", "fr": "fr-FR", "gl": "gl-ES", "he": "he-IL", "hi": "hi-IN", "hr": "hr-HR", "hu": "hu-HU", "id": "id-ID", "it": "it-IT", "ja": "ja-JP", "ko": "ko-KR", "mr": "mr-IN", "ms": "ms-MY", "nb": "nb-NO", "nl": "nl-NL", "pl": "pl-PL", "pt": "pt-BR", "ro": "ro-RO", "ru": "ru-RU", "sk": "sk-SK", "sl": "sl-SI", "sv": "sv-SE", "ta": "ta-IN", "te": "te-IN", "th": "th-TH", "tr": "tr-TR", "uk": "uk-UA", "vi": "vi-VN", "wuu": "wuu-CN", "yue": "yue-HK" };
-// EOF
diff --git a/build/cjs/index.d.ts b/build/cjs/index.d.ts
deleted file mode 100644
index 95a6baf..0000000
--- a/build/cjs/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * as voicesSelection from "./voices.js";
diff --git a/build/cjs/index.js b/build/cjs/index.js
deleted file mode 100644
index 899a986..0000000
--- a/build/cjs/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-"use strict";
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
- o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.voicesSelection = void 0;
-exports.voicesSelection = __importStar(require("./voices.js"));
diff --git a/build/cjs/voices.d.ts b/build/cjs/voices.d.ts
deleted file mode 100644
index ae50a6a..0000000
--- a/build/cjs/voices.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { TGender, TQuality, IRecommended } from "./data.gen.js";
-export interface IVoices {
- label: string;
- voiceURI: string;
- name: string;
- language: string;
- gender?: TGender | undefined;
- age?: string | undefined;
- offlineAvailability: boolean;
- quality?: TQuality | undefined;
- pitchControl: boolean;
- recommendedPitch?: number | undefined;
- recommendedRate?: number | undefined;
-}
-export declare function getSpeechSynthesisVoices(): Promise;
-export declare function parseSpeechSynthesisVoices(speechSynthesisVoices: SpeechSynthesisVoice[]): IVoices[];
-export declare function filterOnOfflineAvailability(voices: IVoices[], offline?: boolean): IVoices[];
-export declare function filterOnGender(voices: IVoices[], gender: TGender): IVoices[];
-export declare function filterOnLanguage(voices: IVoices[], language: string | string[]): IVoices[];
-export declare function filterOnQuality(voices: IVoices[], quality: TQuality | TQuality[]): IVoices[];
-export declare function filterOnNovelty(voices: IVoices[]): IVoices[];
-export declare function filterOnVeryLowQuality(voices: IVoices[]): IVoices[];
-export type TReturnFilterOnRecommended = [voicesRecommended: IVoices[], voicesLowerQuality: IVoices[]];
-export declare function filterOnRecommended(voices: IVoices[], _recommended?: IRecommended[]): TReturnFilterOnRecommended;
-export declare function sortByQuality(voices: IVoices[]): IVoices[];
-export declare function sortByName(voices: IVoices[]): IVoices[];
-export declare function sortByGender(voices: IVoices[], genderFirst: TGender): IVoices[];
-export declare function sortByLanguage(voices: IVoices[], preferredLanguage?: string[] | string, localization?: string | undefined): IVoices[];
-export declare function sortByRegion(voices: IVoices[], preferredRegions?: string[] | string, localization?: string | undefined): IVoices[];
-export interface ILanguages {
- label: string;
- code: string;
- count: number;
-}
-export declare function listLanguages(voices: IVoices[], localization?: string | undefined): ILanguages[];
-export declare function listRegions(voices: IVoices[], localization?: string | undefined): ILanguages[];
-export type TGroupVoices = Map;
-export declare function groupByLanguages(voices: IVoices[], preferredLanguage?: string[] | string, localization?: string | undefined): TGroupVoices;
-export declare function groupByRegions(voices: IVoices[], preferredRegions?: string[] | string, localization?: string | undefined): TGroupVoices;
-export declare function groupByKindOfVoices(allVoices: IVoices[]): TGroupVoices;
-export declare function getLanguages(voices: IVoices[], preferredLanguage?: string[] | string, localization?: string | undefined): ILanguages[];
-/**
- * Parse and extract SpeechSynthesisVoices,
- * @returns IVoices[]
- */
-export declare function getVoices(preferredLanguage?: string[] | string, localization?: string): Promise;
diff --git a/build/cjs/voices.js b/build/cjs/voices.js
deleted file mode 100644
index 7911022..0000000
--- a/build/cjs/voices.js
+++ /dev/null
@@ -1,449 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getSpeechSynthesisVoices = getSpeechSynthesisVoices;
-exports.parseSpeechSynthesisVoices = parseSpeechSynthesisVoices;
-exports.filterOnOfflineAvailability = filterOnOfflineAvailability;
-exports.filterOnGender = filterOnGender;
-exports.filterOnLanguage = filterOnLanguage;
-exports.filterOnQuality = filterOnQuality;
-exports.filterOnNovelty = filterOnNovelty;
-exports.filterOnVeryLowQuality = filterOnVeryLowQuality;
-exports.filterOnRecommended = filterOnRecommended;
-exports.sortByQuality = sortByQuality;
-exports.sortByName = sortByName;
-exports.sortByGender = sortByGender;
-exports.sortByLanguage = sortByLanguage;
-exports.sortByRegion = sortByRegion;
-exports.listLanguages = listLanguages;
-exports.listRegions = listRegions;
-exports.groupByLanguages = groupByLanguages;
-exports.groupByRegions = groupByRegions;
-exports.groupByKindOfVoices = groupByKindOfVoices;
-exports.getLanguages = getLanguages;
-exports.getVoices = getVoices;
-const data_gen_js_1 = require("./data.gen.js");
-// export type TOS = 'Android' | 'ChromeOS' | 'iOS' | 'iPadOS' | 'macOS' | 'Windows';
-// export type TBrowser = 'ChromeDesktop' | 'Edge' | 'Firefox' | 'Safari';
-const navigatorLanguages = () => { var _a; return ((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.languages) || []; };
-const navigatorLang = () => ((navigator === null || navigator === void 0 ? void 0 : navigator.language) || "").split("-")[0].toLowerCase();
-const normalQuality = Object.values(data_gen_js_1.quality).map(({ normal }) => normal);
-const highQuality = Object.values(data_gen_js_1.quality).map(({ high }) => high);
-function compareQuality(a, b) {
- const qualityToNumber = (quality) => {
- switch (quality) {
- case "veryLow": {
- return 0;
- }
- case "low": {
- return 1;
- }
- case "normal": {
- return 2;
- }
- case "high": {
- return 3;
- }
- case "veryHigh": {
- return 4;
- }
- default:
- {
- return -1;
- }
- ;
- }
- };
- return qualityToNumber(b || "low") - qualityToNumber(a || "low");
-}
-;
-function getSpeechSynthesisVoices() {
- return __awaiter(this, void 0, void 0, function* () {
- const a = () => speechSynthesis.getVoices();
- const voices = a();
- if (Array.isArray(voices) && voices.length)
- return voices;
- return new Promise((resolve, _reject) => {
- let counter = 1000;
- const tick = () => {
- if (counter < 1)
- return resolve([]);
- // console.log(counter);
- --counter;
- const voices = a();
- if (Array.isArray(voices) && voices.length)
- return resolve(voices);
- setTimeout(tick, 10);
- };
- setTimeout(tick, 10);
- });
- });
-}
-function parseSpeechSynthesisVoices(speechSynthesisVoices) {
- const parseAndFormatBCP47 = (lang) => {
- const speechVoiceLang = lang.replace("_", "-");
- if (/\w{2,3}-\w{2,3}/.test(speechVoiceLang)) {
- return `${speechVoiceLang.split("-")[0].toLowerCase()}-${speechVoiceLang.split("-")[1].toUpperCase()}`;
- }
- // bad formated !?
- return lang;
- };
- return speechSynthesisVoices.map((speechVoice) => ({
- label: speechVoice.name,
- voiceURI: speechVoice.voiceURI,
- name: speechVoice.name,
- language: parseAndFormatBCP47(speechVoice.lang),
- gender: undefined,
- age: undefined,
- offlineAvailability: speechVoice.localService,
- quality: undefined,
- pitchControl: true,
- recommendedPitch: undefined,
- recomendedRate: undefined,
- }));
-}
-function filterOnOfflineAvailability(voices, offline = true) {
- return voices.filter(({ offlineAvailability }) => {
- return offlineAvailability === offline;
- });
-}
-function filterOnGender(voices, gender) {
- return voices.filter(({ gender: voiceGender }) => {
- return voiceGender === gender;
- });
-}
-function filterOnLanguage(voices, language) {
- language = Array.isArray(language) ? language : [language];
- language = language.map((l) => extractLangRegionFromBCP47(l)[0]);
- return voices.filter(({ language: voiceLanguage }) => {
- const [lang] = extractLangRegionFromBCP47(voiceLanguage);
- return language.includes(lang);
- });
-}
-function filterOnQuality(voices, quality) {
- quality = Array.isArray(quality) ? quality : [quality];
- return voices.filter(({ quality: voiceQuality }) => {
- return quality.some((qual) => qual === voiceQuality);
- });
-}
-function filterOnNovelty(voices) {
- return voices.filter(({ name }) => {
- return !data_gen_js_1.novelty.includes(name);
- });
-}
-function filterOnVeryLowQuality(voices) {
- return voices.filter(({ name }) => {
- return !data_gen_js_1.veryLowQuality.find((v) => name.startsWith(v));
- });
-}
-function updateVoiceInfo(recommendedVoice, voice) {
- voice.label = recommendedVoice.label;
- voice.gender = recommendedVoice.gender;
- voice.recommendedPitch = recommendedVoice.recommendedPitch;
- voice.recommendedRate = recommendedVoice.recommendedRate;
- return voice;
-}
-function filterOnRecommended(voices, _recommended = data_gen_js_1.recommended) {
- const voicesRecommended = [];
- const voicesLowerQuality = [];
- recommendedVoiceLoop: for (const recommendedVoice of _recommended) {
- if (Array.isArray(recommendedVoice.quality) && recommendedVoice.quality.length > 1) {
- const voicesFound = voices.filter(({ name }) => name.startsWith(recommendedVoice.name));
- if (voicesFound.length) {
- for (const qualityTested of ["high", "normal"]) {
- for (let i = 0; i < voicesFound.length; i++) {
- const voice = voicesFound[i];
- const rxp = /^.*\((.*)\)$/;
- if (rxp.test(voice.name)) {
- const res = rxp.exec(voice.name);
- const maybeQualityString = res ? res[1] || "" : "";
- const qualityDataArray = qualityTested === "high" ? highQuality : normalQuality;
- if (recommendedVoice.quality.includes(qualityTested) && qualityDataArray.includes(maybeQualityString)) {
- voice.quality = qualityTested;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- voicesFound.splice(i, 1);
- voicesLowerQuality.push(...(voicesFound.map((v) => {
- v.quality = "low"; // Todo need to be more precise for 'normal' quality voices
- return updateVoiceInfo(recommendedVoice, v);
- })));
- continue recommendedVoiceLoop;
- }
- }
- }
- }
- const voice = voicesFound[0];
- for (let i = 1; i < voicesFound.length; i++) {
- voicesLowerQuality.push(voicesFound[i]);
- }
- voice.quality = voicesFound.length > 3 ? "veryHigh" : voicesFound.length > 2 ? "high" : "normal";
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- }
- }
- else if (Array.isArray(recommendedVoice.altNames) && recommendedVoice.altNames.length) {
- const voiceFound = voices.find(({ name }) => name === recommendedVoice.name);
- if (voiceFound) {
- const voice = voiceFound;
- voice.quality = Array.isArray(recommendedVoice.quality) ? recommendedVoice.quality[0] : undefined;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- // voice Name found so altNames array must be filter and push to voicesLowerQuality
- const altNamesVoicesFound = voices.filter(({ name }) => recommendedVoice.altNames.includes(name));
- // TODO: Typescript bug type assertion doesn't work, need to force the compiler with the Non-null Assertion Operator
- voicesLowerQuality.push(...(altNamesVoicesFound.map((v) => {
- v.quality = recommendedVoice.quality[0];
- return updateVoiceInfo(recommendedVoice, v);
- })));
- }
- else {
- // filter voices on altNames, keep the first and push the remaining to voicesLowerQuality
- const altNamesVoicesFound = voices.filter(({ name }) => recommendedVoice.altNames.includes(name));
- if (altNamesVoicesFound.length) {
- const voice = altNamesVoicesFound.shift();
- voice.quality = Array.isArray(recommendedVoice.quality) ? recommendedVoice.quality[0] : undefined;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- voicesLowerQuality.push(...(altNamesVoicesFound.map((v) => {
- v.quality = recommendedVoice.quality[0];
- return updateVoiceInfo(recommendedVoice, v);
- })));
- }
- }
- }
- else {
- const voiceFound = voices.find(({ name }) => name === recommendedVoice.name);
- if (voiceFound) {
- const voice = voiceFound;
- voice.quality = Array.isArray(recommendedVoice.quality) ? recommendedVoice.quality[0] : undefined;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- }
- }
- }
- return [voicesRecommended, voicesLowerQuality];
-}
-const extractLangRegionFromBCP47 = (l) => { var _a; return [l.split("-")[0].toLowerCase(), (_a = l.split("-")[1]) === null || _a === void 0 ? void 0 : _a.toUpperCase()]; };
-function sortByQuality(voices) {
- return voices.sort(({ quality: qa }, { quality: qb }) => {
- return compareQuality(qa, qb);
- });
-}
-function sortByName(voices) {
- return voices.sort(({ name: na }, { name: nb }) => {
- return na.localeCompare(nb);
- });
-}
-function sortByGender(voices, genderFirst) {
- return voices.sort(({ gender: ga }, { gender: gb }) => {
- return ga === gb ? 0 : ga === genderFirst ? -1 : gb === genderFirst ? -1 : 1;
- });
-}
-function orderByPreferredLanguage(preferredLanguage) {
- preferredLanguage = Array.isArray(preferredLanguage) ? preferredLanguage :
- preferredLanguage ? [preferredLanguage] : [];
- return [...(new Set([...preferredLanguage, ...navigatorLanguages()]))];
-}
-function orderByPreferredRegion(preferredLanguage) {
- preferredLanguage = Array.isArray(preferredLanguage) ? preferredLanguage :
- preferredLanguage ? [preferredLanguage] : [];
- const regionByDefaultArray = Object.values(data_gen_js_1.defaultRegion);
- return [...(new Set([...preferredLanguage, ...navigatorLanguages(), ...regionByDefaultArray]))];
-}
-const getLangFromBCP47Array = (a) => {
- return [...(new Set(a.map((v) => extractLangRegionFromBCP47(v)[0]).filter((v) => !!v)))];
-};
-const getRegionFromBCP47Array = (a) => {
- return [...(new Set(a.map((v) => (extractLangRegionFromBCP47(v)[1] || "").toUpperCase()).filter((v) => !!v)))];
-};
-function sortByLanguage(voices, preferredLanguage = [], localization = navigatorLang()) {
- const languages = getLangFromBCP47Array(orderByPreferredLanguage(preferredLanguage));
- const voicesSorted = [];
- for (const lang of languages) {
- voicesSorted.push(...voices.filter(({ language: voiceLanguage }) => lang === extractLangRegionFromBCP47(voiceLanguage)[0]));
- }
- let langueName = undefined;
- if (localization) {
- try {
- langueName = new Intl.DisplayNames([localization], { type: 'language' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- const remainingVoices = voices.filter((v) => !voicesSorted.includes(v));
- remainingVoices.sort(({ language: a }, { language: b }) => {
- let nameA = a, nameB = b;
- try {
- if (langueName) {
- nameA = langueName.of(extractLangRegionFromBCP47(a)[0]) || a;
- nameB = langueName.of(extractLangRegionFromBCP47(b)[0]) || b;
- }
- }
- catch (e) {
- // ignore
- }
- return nameA.localeCompare(nameB);
- });
- return [...voicesSorted, ...remainingVoices];
-}
-function sortByRegion(voices, preferredRegions = [], localization = navigatorLang()) {
- const regions = getRegionFromBCP47Array(orderByPreferredRegion(preferredRegions));
- const voicesSorted = [];
- for (const reg of regions) {
- voicesSorted.push(...voices.filter(({ language: voiceLanguage }) => reg === extractLangRegionFromBCP47(voiceLanguage)[1]));
- }
- let regionName = undefined;
- if (localization) {
- try {
- regionName = new Intl.DisplayNames([localization], { type: 'region' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- const remainingVoices = voices.filter((v) => !voicesSorted.includes(v));
- remainingVoices.sort(({ language: a }, { language: b }) => {
- let nameA = a, nameB = b;
- try {
- if (regionName) {
- nameA = regionName.of(extractLangRegionFromBCP47(a)[1]) || a;
- nameB = regionName.of(extractLangRegionFromBCP47(b)[1]) || b;
- }
- }
- catch (e) {
- // ignore
- }
- return nameA.localeCompare(nameB);
- });
- return [...voicesSorted, ...remainingVoices];
-}
-function listLanguages(voices, localization = navigatorLang()) {
- let langueName = undefined;
- if (localization) {
- try {
- langueName = new Intl.DisplayNames([localization], { type: 'language' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- return voices.reduce((acc, cv) => {
- const [lang] = extractLangRegionFromBCP47(cv.language);
- let name = lang;
- try {
- if (langueName) {
- name = langueName.of(lang) || lang;
- }
- }
- catch (e) {
- console.error("langueName.of throw an error with ", lang, e);
- }
- const found = acc.find(({ code }) => code === lang);
- if (found) {
- found.count++;
- }
- else {
- acc.push({ code: lang, count: 1, label: name });
- }
- return acc;
- }, []);
-}
-function listRegions(voices, localization = navigatorLang()) {
- let regionName = undefined;
- if (localization) {
- try {
- regionName = new Intl.DisplayNames([localization], { type: 'region' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- return voices.reduce((acc, cv) => {
- const [, region] = extractLangRegionFromBCP47(cv.language);
- let name = region;
- try {
- if (regionName) {
- name = regionName.of(region) || region;
- }
- }
- catch (e) {
- console.error("regionName.of throw an error with ", region, e);
- }
- const found = acc.find(({ code }) => code === region);
- if (found) {
- found.count++;
- }
- else {
- acc.push({ code: region, count: 1, label: name });
- }
- return acc;
- }, []);
-}
-function groupByLanguages(voices, preferredLanguage = [], localization = navigatorLang()) {
- const voicesSorted = sortByLanguage(voices, preferredLanguage, localization);
- const languagesStructure = listLanguages(voicesSorted, localization);
- const res = new Map();
- for (const { code, label } of languagesStructure) {
- res.set(label, voicesSorted
- .filter(({ language: voiceLang }) => {
- const [l] = extractLangRegionFromBCP47(voiceLang);
- return l === code;
- }));
- }
- return res;
-}
-function groupByRegions(voices, preferredRegions = [], localization = navigatorLang()) {
- const voicesSorted = sortByRegion(voices, preferredRegions, localization);
- const languagesStructure = listRegions(voicesSorted, localization);
- const res = new Map();
- for (const { code, label } of languagesStructure) {
- res.set(label, voicesSorted
- .filter(({ language: voiceLang }) => {
- const [, r] = extractLangRegionFromBCP47(voiceLang);
- return r === code;
- }));
- }
- return res;
-}
-function groupByKindOfVoices(allVoices) {
- const [recommendedVoices, lowQualityVoices] = filterOnRecommended(allVoices);
- const remainingVoice = allVoices.filter((v) => !recommendedVoices.includes(v) && !lowQualityVoices.includes(v));
- const noveltyFiltered = filterOnNovelty(remainingVoice);
- const noveltyVoices = remainingVoice.filter((v) => !noveltyFiltered.includes(v));
- const veryLowQualityFiltered = filterOnVeryLowQuality(remainingVoice);
- const veryLowQualityVoices = remainingVoice.filter((v) => !veryLowQualityFiltered.includes(v));
- const remainingVoiceFiltered = filterOnNovelty(filterOnVeryLowQuality(remainingVoice));
- const res = new Map();
- res.set("recommendedVoices", recommendedVoices);
- res.set("lowerQuality", lowQualityVoices);
- res.set("novelty", noveltyVoices);
- res.set("veryLowQuality", veryLowQualityVoices);
- res.set("remaining", remainingVoiceFiltered);
- return res;
-}
-function getLanguages(voices, preferredLanguage = [], localization = navigatorLang()) {
- const group = groupByLanguages(voices, preferredLanguage, localization);
- return Array.from(group.entries()).map(([label, _voices]) => {
- var _a;
- return { label, count: _voices.length, code: extractLangRegionFromBCP47(((_a = _voices[0]) === null || _a === void 0 ? void 0 : _a.language) || "")[0] };
- });
-}
-/**
- * Parse and extract SpeechSynthesisVoices,
- * @returns IVoices[]
- */
-function getVoices(preferredLanguage, localization) {
- return __awaiter(this, void 0, void 0, function* () {
- const allVoices = parseSpeechSynthesisVoices(yield getSpeechSynthesisVoices());
- const [recommendedVoices, lowQualityVoices] = filterOnRecommended(allVoices);
- const remainingVoice = allVoices.filter((v) => !recommendedVoices.includes(v) && !lowQualityVoices.includes(v));
- const remainingVoiceFiltered = filterOnNovelty(filterOnVeryLowQuality(remainingVoice));
- const voices = [recommendedVoices, remainingVoiceFiltered].flat();
- const voicesSorted = sortByLanguage(sortByQuality(voices), preferredLanguage, localization || navigatorLang());
- return voicesSorted;
- });
-}
diff --git a/build/mjs/package.json b/build/mjs/package.json
deleted file mode 100644
index 4f5ea21..0000000
--- a/build/mjs/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "main": "src/index.js",
- "type": "module"
-}
diff --git a/build/mjs/src/data.gen.d.ts b/build/mjs/src/data.gen.d.ts
deleted file mode 100644
index b5856da..0000000
--- a/build/mjs/src/data.gen.d.ts
+++ /dev/null
@@ -1,201 +0,0 @@
-export declare const novelty: string[];
-export declare const veryLowQuality: string[];
-export type TGender = "female" | "male" | "nonbinary";
-export type TQuality = "veryLow" | "low" | "normal" | "high" | "veryHigh";
-export interface IRecommended {
- label: string;
- name: string;
- altNames?: string[];
- language: string;
- gender?: TGender | undefined;
- age?: string | undefined;
- quality: TQuality[];
- recommendedPitch?: number | undefined;
- recommendedRate?: number | undefined;
- localizedName: string;
-}
-export declare const recommended: Array;
-export declare const quality: {
- ar: {
- normal: string;
- high: string;
- };
- ca: {
- normal: string;
- high: string;
- };
- "cmn-CN": {
- normal: string;
- high: string;
- };
- "cmn-TW": {
- normal: string;
- high: string;
- };
- cs: {
- normal: string;
- high: string;
- };
- da: {
- normal: string;
- high: string;
- };
- de: {
- normal: string;
- high: string;
- };
- el: {
- normal: string;
- high: string;
- };
- en: {
- normal: string;
- high: string;
- };
- es: {
- normal: string;
- high: string;
- };
- fi: {
- normal: string;
- high: string;
- };
- fr: {
- normal: string;
- high: string;
- };
- he: {
- normal: string;
- high: string;
- };
- hi: {
- normal: string;
- high: string;
- };
- hr: {
- normal: string;
- high: string;
- };
- hu: {
- normal: string;
- high: string;
- };
- id: {
- normal: string;
- high: string;
- };
- it: {
- normal: string;
- high: string;
- };
- ja: {
- normal: string;
- high: string;
- };
- ko: {
- normal: string;
- high: string;
- };
- ms: {
- normal: string;
- high: string;
- };
- nb: {
- normal: string;
- high: string;
- };
- nl: {
- normal: string;
- high: string;
- };
- pl: {
- normal: string;
- high: string;
- };
- pt: {
- normal: string;
- high: string;
- };
- ro: {
- normal: string;
- high: string;
- };
- ru: {
- normal: string;
- high: string;
- };
- sk: {
- normal: string;
- high: string;
- };
- sl: {
- normal: string;
- high: string;
- };
- sv: {
- normal: string;
- high: string;
- };
- th: {
- normal: string;
- high: string;
- };
- tr: {
- normal: string;
- high: string;
- };
- uk: {
- normal: string;
- high: string;
- };
- vi: {
- normal: string;
- high: string;
- };
-};
-export declare const defaultRegion: {
- ar: string;
- bg: string;
- bho: string;
- bn: string;
- ca: string;
- cmn: string;
- cs: string;
- da: string;
- de: string;
- el: string;
- en: string;
- es: string;
- eu: string;
- fa: string;
- fi: string;
- fr: string;
- gl: string;
- he: string;
- hi: string;
- hr: string;
- hu: string;
- id: string;
- it: string;
- ja: string;
- ko: string;
- mr: string;
- ms: string;
- nb: string;
- nl: string;
- pl: string;
- pt: string;
- ro: string;
- ru: string;
- sk: string;
- sl: string;
- sv: string;
- ta: string;
- te: string;
- th: string;
- tr: string;
- uk: string;
- vi: string;
- wuu: string;
- yue: string;
-};
diff --git a/build/mjs/src/data.gen.js b/build/mjs/src/data.gen.js
deleted file mode 100644
index ed5cdb0..0000000
--- a/build/mjs/src/data.gen.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// https://github.com/readium/speech
-// file script-generated by : npm run extract-json-data
-//
-export const novelty = ["Albert", "Bad News", "Bahh", "Bells", "Boing", "Bubbles", "Cellos", "Good News", "Jester", "Organ", "Superstar", "Trinoids", "Whisper", "Wobble", "Zarvox"];
-export const veryLowQuality = ["Eddy", "Flo", "Grandma", "Grandpa", "Jacques", "Reed", "Rocko", "Sandy", "Shelley", "Fred", "Junior", "Kathy", "Ralph", "eSpeak Arabic", "eSpeak Bulgarian", "eSpeak Bengali", "eSpeak Catalan", "eSpeak Chinese (Mandarin, latin as English)", "eSpeak Czech", "eSpeak Danish", "eSpeak German", "eSpeak Greek", "eSpeak Spanish (Spain)", "eSpeak Estonian", "eSpeak Finnish", "eSpeak Gujarati", "eSpeak Croatian", "eSpeak Hungarian", "eSpeak Indonesian", "eSpeak Italian", "eSpeak Kannada", "eSpeak Korean", "eSpeak Lithuanian", "eSpeak Latvian", "eSpeak Malayalm", "eSpeak Marathi", "eSpeak Malay", "eSpeak Norwegian Bokmål", "eSpeak Polish", "eSpeak Portuguese (Brazil)", "eSpeak Romanian", "eSpeak Russian", "eSpeak Slovak", "eSpeak Slovenian", "eSpeak Serbian", "eSpeak Swedish", "eSpeak Swahili", "eSpeak Tamil", "eSpeak Telugu", "eSpeak Turkish", "eSpeak Vietnamese (Northern)"];
-;
-export const recommended = [{ "label": "Amina", "name": "Microsoft Amina Online (Natural) - Arabic (Algeria)", "language": "ar-DZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ismael", "name": "Microsoft Ismael Online (Natural) - Arabic (Algeria)", "language": "ar-DZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Laila", "name": "Microsoft Laila Online (Natural) - Arabic (Bahrain)", "language": "ar-BH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ali", "name": "Microsoft Ali Online (Natural) - Arabic (Bahrain)", "language": "ar-BH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Salma", "name": "Microsoft Salma Online (Natural) - Arabic (Egypt)", "language": "ar-EG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Shakir", "name": "Microsoft Shakir Online (Natural) - Arabic (Egypt)", "language": "ar-EG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rana", "name": "Microsoft Rana Online (Natural) - Arabic (Iraq)", "language": "ar-IQ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Bassel", "name": "Microsoft Bassel Online (Natural) - Arabic (Iraq)", "language": "ar-IQ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sana", "name": "Microsoft Sana Online (Natural) - Arabic (Jordan)", "language": "ar-JO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Taim", "name": "Microsoft Taim Online (Natural) - Arabic (Jordan)", "language": "ar-JO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Noura", "name": "Microsoft Noura Online (Natural) - Arabic (Kuwait)", "language": "ar-KW", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fahed", "name": "Microsoft Fahed Online (Natural) - Arabic (Kuwait)", "language": "ar-KW", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Layla", "name": "Microsoft Layla Online (Natural) - Arabic (Lebanon)", "language": "ar-LB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rami", "name": "Microsoft Rami Online (Natural) - Arabic (Lebanon)", "language": "ar-LB", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Iman", "name": "Microsoft Iman Online (Natural) - Arabic (Libya)", "language": "ar-LY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Omar", "name": "Microsoft Omar Online (Natural) - Arabic (Libya)", "language": "ar-LY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mouna", "name": "Microsoft Mouna Online (Natural) - Arabic (Morocco)", "language": "ar-MA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jamal", "name": "Microsoft Jamal Online (Natural) - Arabic (Morocco)", "language": "ar-MA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Aysha", "name": "Microsoft Aysha Online (Natural) - Arabic (Oman)", "language": "ar-OM", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Abdullah", "name": "Microsoft Abdullah Online (Natural) - Arabic (Oman)", "language": "ar-OM", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amal", "name": "Microsoft Amal Online (Natural) - Arabic (Qatar)", "language": "ar-QA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Moaz", "name": "Microsoft Moaz Online (Natural) - Arabic (Qatar)", "language": "ar-QA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Zariyah", "name": "Microsoft Zariyah Online (Natural) - Arabic (Saudi Arabia)", "language": "ar-SA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hamed", "name": "Microsoft Hamed Online (Natural) - Arabic (Saudi Arabia)", "language": "ar-SA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amany", "name": "Microsoft Amany Online (Natural) - Arabic (Syria)", "language": "ar-SY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Laith", "name": "Microsoft Laith Online (Natural) - Arabic (Syria)", "language": "ar-SY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Reem", "name": "Microsoft Reem Online (Natural) - Arabic (Tunisia)", "language": "ar-TN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hedi", "name": "Microsoft Hedi Online (Natural) - Arabic (Tunisia)", "language": "ar-TN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fatima", "name": "Microsoft Fatima Online (Natural) - Arabic (United Arab Emirates)", "language": "ar-AE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hamdan", "name": "Microsoft Hamdan Online (Natural) - Arabic (United Arab Emirates)", "language": "ar-AE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maryam", "name": "Microsoft Maryam Online (Natural) - Arabic (Yemen)", "language": "ar-YE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Saleh", "name": "Microsoft Saleh Online (Natural) - Arabic (Yemen)", "language": "ar-YE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mariam", "name": "Mariam", "language": "ar-001", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Laila (Apple)", "name": "Laila", "language": "ar-001", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tarik", "name": "Tarik", "language": "ar-001", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Majed", "name": "Majed", "language": "ar-001", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Hoda", "name": "Microsoft Hoda - Arabic (Arabic )", "language": "ar-EG", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Naayf", "name": "Microsoft Naayf - Arabic (Saudi Arabia)", "language": "ar-AS", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت انثوي 1", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-arc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-arc-local", "Android Speech Recognition and Synthesis from Google ar-language"], "language": "ar", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت انثوي 2", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-arz-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-arz-local"], "language": "ar", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت ذكر 1", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-ard-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-ard-local"], "language": "ar", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "صوت ذكر 2", "name": "Android Speech Recognition and Synthesis from Google ar-xa-x-are-network", "altNames": ["Android Speech Recognition and Synthesis from Google ar-xa-x-are-local"], "language": "ar", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kalina", "name": "Microsoft Kalina Online (Natural) - Bulgarian (Bulgaria)", "language": "bg-BG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Borislav", "name": "Microsoft Borislav Online (Natural) - Bulgarian (Bulgaria)", "language": "bg-BG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Daria", "name": "Daria", "language": "bg-BG", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Ivan", "name": "Microsoft Ivan - Bulgarian (Bulgaria)", "language": "bg-BG", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женски глас", "name": "Android Speech Recognition and Synthesis from Google bg-bg-x-ifk-network", "altNames": ["Android Speech Recognition and Synthesis from Google bg-bg-x-ifk-local", "Android Speech Recognition and Synthesis from Google bg-bg-language"], "language": "bg-BG", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Jaya", "name": "Jaya", "language": "bho-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tanishaa", "name": "Microsoft Tanishaa Online (Natural) - Bengali (India)", "language": "bn-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Bashkar", "name": "Microsoft Bashkar Online (Natural) - Bangla (India)", "language": "bn-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Nabanita", "name": "Microsoft Nabanita Online (Natural) - Bangla (Bangladesh)", "language": "bn-BD", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Pradeep", "name": "Microsoft Pradeep Online (Natural) - Bangla (Bangladesh)", "language": "bn-BD", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Piya", "name": "Piya", "language": "bn-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "মহিলা কণ্ঠস্বর 1", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bnf-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bnf-local", "Android Speech Recognition and Synthesis from Google bn-IN-language"], "language": "bn-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "মহিলা কণ্ঠস্বর 2", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bnx-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bnx-local"], "language": "bn-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "পুরুষ কন্ঠ 1", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bin-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bin-local"], "language": "bn-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "পুরুষ কন্ঠ 2", "name": "Android Speech Recognition and Synthesis from Google bn-in-x-bnm-network", "altNames": ["Android Speech Recognition and Synthesis from Google bn-in-x-bnm-local"], "language": "bn-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "পুরুষ কন্ঠ", "name": "Google বাংলা (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google bn-bd-x-ban-network", "Chrome OS বাংলা", "Android Speech Recognition and Synthesis from Google bn-bd-x-ban-local", "Android Speech Recognition and Synthesis from Google bn-BD-language"], "language": "bn-BD", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Joana (Català)", "name": "Microsoft Joana Online (Natural) - Catalan (Spain)", "language": "ca-ES", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Enric (Català)", "name": "Microsoft Enric Online (Natural) - Catalan (Spain)", "language": "ca-ES", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Montse (Català)", "name": "Montse", "language": "ca-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Pau (Valencià)", "name": "Pau", "language": "ca-ES-u-sd-esvc", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jordi (Català)", "name": "Jordi", "language": "ca-ES", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Herena (Català)", "name": "Microsoft Herena - Catalan (Spain)", "language": "ca-ES", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Veu femenina catalana", "name": "Android Speech Recognition and Synthesis from Google ca-es-x-caf-network", "altNames": ["Android Speech Recognition and Synthesis from Google ca-es-x-caf-local", "Android Speech Recognition and Synthesis from Google ca-ES-language"], "language": "ca-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Xiaoxiao", "name": "Microsoft Xiaoxiao Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Xiaoyi", "name": "Microsoft Xiaoyi Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunxi", "name": "Microsoft Yunxi Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunxia", "name": "Microsoft Yunxia Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Xiaobei", "name": "Microsoft Xiaobei Online (Natural) - Chinese (Northeastern Mandarin)", "language": "cmn-CN-liaoning", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Xiaoni", "name": "Microsoft Xiaobei Online (Natural) - Chinese (Zhongyuan Mandarin Shaanxi)", "language": "cmn-CN-shaanxi", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunjian", "name": "Microsoft Yunjian Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yunyang", "name": "Microsoft Yunyang Online (Natural) - Chinese (Mainland)", "language": "cmn-CN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "HsiaoChen", "name": "Microsoft HsiaoChen Online (Natural) - Chinese (Taiwan)", "language": "cmn-TW", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "HsiaoYu", "name": "Microsoft HsiaoYu Online (Natural) - Chinese (Taiwanese Mandarin)", "language": "cmn-TW", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "YunJhe", "name": "Microsoft YunJhe Online (Natural) - Chinese (Taiwan)", "language": "cmn-TW", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lilian", "name": "Lilian", "language": "cmn-CN", "gender": "female", "quality": ["normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tiantian", "name": "Tiantian", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Shasha", "name": "Shasha", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lili", "name": "Lili", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lisheng", "name": "Lisheng", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lanlan", "name": "Lanlan", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Shanshan", "name": "Shanshan", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yue", "name": "Yue", "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tingting", "name": "Tingting", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yu-shu", "name": "Yu-shu", "language": "cmn-CN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Dongmei", "name": "Dongmei", "language": "cmn-CN-liaoning", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Panpan", "name": "Panpan", "language": "cmn-CN-sichuan", "gender": "female", "quality": ["low", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Meijia", "name": "Meijia", "language": "cmn-TW", "gender": "female", "quality": ["low", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Han", "name": "Han", "language": "cmn-CN", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Bobo", "name": "Bobo", "language": "cmn-CN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Taotao", "name": "Taotao", "language": "cmn-CN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Binbin", "name": "Binbin", "language": "cmn-CN", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Li-Mu", "name": "Li-Mu", "language": "cmn-CN", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Haohao", "name": "Haohao", "language": "cmn-CN-shaanxi", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google 女声(香港)", "name": "Google 粤語(香港)", "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Google 女聲(臺灣)", "name": "Google 國語(臺灣)", "language": "cmn-TW", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Huihui", "name": "Microsoft Huihui - Chinese (Simplified, PRC)", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Yaoyao", "name": "Microsoft Yaoyao - Chinese (Simplified, PRC)", "language": "cmn-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kangkang", "name": "Microsoft Kangkang - Chinese (Simplified, PRC)", "language": "cmn-CN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Yating", "name": "Microsoft Yating - Chinese (Traditional, Taiwan)", "language": "cmn-TW", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hanhan", "name": "Microsoft Hanhan - Chinese (Traditional, Taiwan)", "language": "cmn-TW", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Zhiwei", "name": "Microsoft Zhiwei - Chinese (Traditional, Taiwan)", "language": "cmn-TW", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女声1", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-ccc-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-ccc-local", "Android Speech Recognition and Synthesis from Google zh-CN-language"], "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女声2", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-ssa-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-ssa-local"], "language": "cmn-CN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男声1", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-ccd-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-ccd-local"], "language": "cmn-CN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男声2", "name": "Android Speech Recognition and Synthesis from Google cmn-CN-x-cce-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-CN-x-cce-local"], "language": "cmn-CN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女聲", "name": "Android Speech Recognition and Synthesis from Google cmn-TW-x-ctc-network", "altNames": ["Android Speech Recognition and Synthesis from Google cmn-TW-x-ctc-local", "Android Speech Recognition and Synthesis from Google zh-TW-language"], "language": "cmn-TW", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲1", "name": "Android Speech Recognition and Synthesis from Google cmn-TW-x-ctd-network", "altNames": ["Chrome OS 粵語 1", "Android Speech Recognition and Synthesis from Google cmn-TW-x-ctd-local"], "language": "cmn-TW", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲2", "name": "Android Speech Recognition and Synthesis from Google cmn-TW-x-cte-network", "altNames": ["Chrome OS 粵語 1", "Android Speech Recognition and Synthesis from Google cmn-TW-x-cte-local"], "language": "cmn-CTW", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vlasta", "name": "Microsoft Vlasta Online (Natural) - Czech (Czech)", "language": "cs-CZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Antonin", "name": "Microsoft Antonin Online (Natural) - Czech (Czech)", "language": "cs-CZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Zuzana", "name": "Zuzana", "language": "cs-CZ", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Iveta", "name": "Iveta", "language": "cs-CZ", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jakub", "name": "Microsoft Jakub - Czech (Czech)", "language": "cs-CZ", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženský hlas", "name": "Google čeština (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google cs-cz-x-jfs-network", "Chrome OS čeština", "Android Speech Recognition and Synthesis from Google cs-cz-x-jfs-local", "Android Speech Recognition and Synthesis from Google cs-CZ-language"], "language": "cs-CZ", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Christel", "name": "Microsoft Christel Online (Natural) - Danish (Denmark)", "language": "da-DK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jeppe", "name": "Microsoft Jeppe Online (Natural) - Danish (Denmark)", "language": "da-DK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sara", "name": "Sara", "language": "da-DK", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Magnus", "name": "Magnus", "language": "da-DK", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Helle", "name": "Microsoft Helle - Danish (Denmark)", "language": "da-DK", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvindestemme 1", "name": "Google Dansk 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-kfm-network", "Chrome OS Dansk 1", "Android Speech Recognition and Synthesis from Google da-dk-x-kfm-local", "Android Speech Recognition and Synthesis from Google da-DK-language"], "language": "da-DK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvindestemme 2", "name": "Google Dansk 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-sfp-network", "Chrome OS Dansk 3", "Android Speech Recognition and Synthesis from Google da-dk-x-sfp-local"], "language": "da-DK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvindestemme 3", "name": "Google Dansk 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-vfb-network", "Chrome OS Dansk 4", "Android Speech Recognition and Synthesis from Google da-dk-x-vfb-local"], "language": "da-DK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mandsstemme", "name": "Google Dansk 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google da-dk-x-nmm-network", "Chrome OS Dansk 2", "Android Speech Recognition and Synthesis from Google da-dk-x-nmm-local"], "language": "da-DK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Seraphina", "name": "Microsoft SeraphinaMultilingual Online (Natural) - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amala", "name": "Microsoft Amala Online (Natural) - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Katja", "name": "Microsoft Katja Online (Natural) - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Florian", "name": "Microsoft FlorianMultilingual Online (Natural) - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Conrad", "name": "Microsoft Conrad Online (Natural) - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Killian", "name": "Microsoft Killian Online (Natural) - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ingrid", "name": "Microsoft Ingrid Online (Natural) - German (Austria)", "language": "de-AT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jonas", "name": "Microsoft Jonas Online (Natural) - German (Austria)", "language": "de-AT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Leni", "name": "Microsoft Leni Online (Natural) - German (Switzerland)", "language": "de-CH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jan", "name": "Microsoft Jan Online (Natural) - German (Switzerland)", "language": "de-CH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Petra", "name": "Petra", "language": "de-DE", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Anna", "name": "Anna", "language": "de-DE", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Helena", "name": "Helena", "language": "de-DE", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Markus", "name": "Markus", "language": "de-DE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Viktor", "name": "Viktor", "language": "de-DE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yannick", "name": "Yannick", "language": "de-DE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Martin", "name": "Martin", "language": "de-DE", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google Deutsch", "name": "Weibliche Google-Stimme (Deutschland)", "language": "de-DE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hedda", "name": "Microsoft Hedda - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Katja", "name": "Microsoft Katja - German (Germany)", "language": "de-DE", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Stefan", "name": "Microsoft Stefan - German (Germany)", "language": "de-DE", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Michael", "name": "Microsoft Michael - German (Austria)", "language": "de-AT", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Karsten", "name": "Microsoft Karsten - German (Switzerland)", "language": "de-CH", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Weibliche Stimme 1 (Deutschland)", "name": "Google Deutsch 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-dea-network", "Chrome OS Deutsch 2", "Android Speech Recognition and Synthesis from Google de-de-x-dea-local", "Android Speech Recognition and Synthesis from Google de-DE-language"], "language": "de-DE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Weibliche Stimme 2 (Deutschland)", "name": "Google Deutsch 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-nfh-network", "Chrome OS Deutsch 1", "Android Speech Recognition and Synthesis from Google de-de-x-nfh-local"], "language": "de-DE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Männliche Stimme 1 (Deutschland)", "name": "Google Deutsch 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-deb-network", "Chrome OS Deutsch 3", "Android Speech Recognition and Synthesis from Google de-de-x-deb-local"], "language": "de-DE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Männliche Stimme 2 (Deutschland)", "name": "Google Deutsch 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google de-de-x-deg-network", "Chrome OS Deutsch 4", "Android Speech Recognition and Synthesis from Google de-de-x-deg-local"], "language": "de-DE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Athina", "name": "Microsoft Athina Online (Natural) - Greek (Greece)", "language": "el-GR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Nestoras", "name": "Microsoft Nestoras Online (Natural) - Greek (Greece)", "language": "el-GR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Melina", "name": "Melina", "language": "el-GR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nikos", "name": "Nikos", "language": "el-GR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Stefanos", "name": "Microsoft Stefanos - Greek (Greece)", "language": "el-GR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Γυναικεία φωνή", "name": "Google Ελληνικά (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google el-gr-x-vfz-network", "Chrome OS Ελληνικά", "Android Speech Recognition and Synthesis from Google el-gr-x-vfz-local", "Android Speech Recognition and Synthesis from Google el-GR-language"], "language": "el-GR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Emma", "name": "Microsoft EmmaMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Emma Online (Natural) - English (United States)"], "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Microsoft Ava", "name": "Microsoft AvaMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Ava Online (Natural) - English (United States)"], "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jenny", "name": "Microsoft Jenny Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Aria", "name": "Microsoft Aria Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Michelle", "name": "Microsoft Michelle Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ana", "name": "Microsoft Ana Online (Natural) - English (United States)", "language": "en-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Andrew", "name": "Microsoft AndrewMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Andrew Online (Natural) - English (United States)"], "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Brian", "name": "Microsoft BrianMultilingual Online (Natural) - English (United States)", "altNames": ["Microsoft Brian Online (Natural) - English (United States)"], "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Guy", "name": "Microsoft Guy Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Eric", "name": "Microsoft Eric Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Steffan", "name": "Microsoft Steffan Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Christopher", "name": "Microsoft Christopher Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Roger", "name": "Microsoft Roger Online (Natural) - English (United States)", "language": "en-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sonia", "name": "Microsoft Sonia Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Libby", "name": "Microsoft Libby Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maisie", "name": "Microsoft Maisie Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ryan", "name": "Microsoft Ryan Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Thomas", "name": "Microsoft Thomas Online (Natural) - English (United Kingdom)", "language": "en-GB", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Natasha", "name": "Microsoft Natasha Online (Natural) - English (Australia)", "language": "en-AU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hayley", "name": "Microsoft Hayley Online - English (Australia)", "language": "en-AU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "William", "name": "Microsoft William Online (Natural) - English (Australia)", "language": "en-AU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Clara", "name": "Microsoft Clara Online (Natural) - English (Canada)", "language": "en-CA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Heather", "name": "Microsoft Heather Online - English (Canada)", "language": "en-CA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Liam", "name": "Microsoft Liam Online (Natural) - English (Canada)", "language": "en-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Neerja", "name": "Microsoft Neerja Online (Natural) - English (India)", "altNames": ["Microsoft Neerja Online (Natural) - English (India) (Preview)"], "language": "en-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Prabhat", "name": "Microsoft Prabhat Online (Natural) - English (India)", "language": "en-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Emily", "name": "Microsoft Emily Online (Natural) - English (Ireland)", "language": "en-IE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Connor", "name": "Microsoft Connor Online (Natural) - English (Ireland)", "language": "en-IE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Leah", "name": "Microsoft Leah Online (Natural) - English (South Africa)", "language": "en-ZA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Luke", "name": "Microsoft Luke Online (Natural) - English (South Africa)", "language": "en-ZA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yan", "name": "Microsoft Yan Online (Natural) - English (Hongkong)", "language": "en-HK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sam", "name": "Microsoft Sam Online (Natural) - English (Hongkong)", "language": "en-HK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Asilia", "name": "Microsoft Asilia Online (Natural) - English (Kenya)", "language": "en-KE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Chilemba", "name": "Microsoft Chilemba Online (Natural) - English (Kenya)", "language": "en-KE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Molly", "name": "Microsoft Molly Online (Natural) - English (New Zealand)", "language": "en-NZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mitchell", "name": "Microsoft Mitchell Online (Natural) - English (New Zealand)", "language": "en-NZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ezinne", "name": "Microsoft Ezinne Online (Natural) - English (Nigeria)", "language": "en-NG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Abeo", "name": "Microsoft Abeo Online (Natural) - English (Nigeria)", "language": "en-NG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Luna", "name": "Microsoft Luna Online (Natural) - English (Singapore)", "language": "en-SG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Wayne", "name": "Microsoft Wayne Online (Natural) - English (Singapore)", "language": "en-SG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Imani", "name": "Microsoft Imani Online (Natural) - English (Tanzania)", "language": "en-TZ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Elimu", "name": "Microsoft Elimu Online (Natural) - English (Tanzania)", "language": "en-TZ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Apple Ava", "name": "Ava", "language": "en-US", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Zoe", "name": "Zoe", "language": "en-US", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Allison", "name": "Allison", "language": "en-US", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nicky", "name": "Nicky", "language": "en-US", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Samantha", "name": "Samantha", "language": "en-US", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Joelle", "name": "Joelle", "language": "en-US", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Evan", "name": "Evan", "language": "en-US", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nathan", "name": "Nathan", "language": "en-US", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tom", "name": "Tom", "language": "en-US", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Alex", "name": "Alex", "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aaron", "name": "Aaron", "language": "en-US", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Kate", "name": "Kate", "language": "en-GB", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Stephanie", "name": "Stephanie", "language": "en-GB", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Serena", "name": "Serena", "language": "en-GB", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Martha", "name": "Martha", "language": "en-GB", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jamie", "name": "Jamie", "language": "en-GB", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Oliver", "name": "Oliver", "language": "en-GB", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Daniel", "name": "Daniel", "language": "en-GB", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Arthur", "name": "Arthur", "language": "en-GB", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Matilda", "name": "Matilda", "language": "en-AU", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Karen", "name": "Karen", "language": "en-AU", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Catherine", "name": "Catherine", "language": "en-AU", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lee", "name": "Lee", "language": "en-AU", "gender": "male", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Gordon", "name": "Gordon", "language": "en-AU", "gender": "male", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Isha", "name": "Isha", "language": "en-IN", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Sangeeta", "name": "Sangeeta", "language": "en-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Rishi", "name": "Rishi", "language": "en-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Moira", "name": "Moira", "language": "en-IE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tessa", "name": "Tessa", "language": "en-ZA", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Fiona", "name": "Fiona", "language": "en-GB-u-sd-gbsct", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Female Google voice (US)", "name": "Google US English", "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female Google voice (UK)", "name": "Google UK English Female", "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male Google voice (UK)", "name": "Google UK English Male", "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Zira", "name": "Microsoft Zira - English (United States)", "language": "en-US", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "David", "name": "Microsoft David - English (United States)", "language": "en-US", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mark", "name": "Microsoft Mark - English (United States)", "language": "en-US", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hazel", "name": "Microsoft Hazel - English (Great Britain)", "language": "en-GB", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Susan", "name": "Microsoft Susan - English (Great Britain)", "language": "en-GB", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "George", "name": "Microsoft George - English (Great Britain)", "language": "en-GB", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Catherine", "name": "Microsoft Catherine - English (Austalia)", "language": "en-AU", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "James", "name": "Microsoft Richard - English (Australia)", "language": "en-AU", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Linda", "name": "Microsoft Linda - English (Canada)", "language": "en-CA", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Richard", "name": "Microsoft Richard - English (Canada)", "language": "en-CA", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Heera", "name": "Microsoft Heera - English (India)", "language": "en-IN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ravi", "name": "Microsoft Ravi - English (India)", "language": "en-IN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sean", "name": "Microsoft Sean - English (Ireland)", "language": "en-IE", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (US)", "name": "Google US English 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-tpc-network", "Chrome OS US English 5", "Android Speech Recognition and Synthesis from Google en-us-x-tpc-local", "Android Speech Recognition and Synthesis from Google en-US-language"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (US)", "name": "Google US English 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iob-network", "Chrome OS US English 1", "Android Speech Recognition and Synthesis from Google en-us-x-iob-local"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 3 (US)", "name": "Google US English 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iog-network", "Chrome OS US English 2", "Android Speech Recognition and Synthesis from Google en-us-x-iog-local"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 4 (US)", "name": "Google US English 7 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-tpf-network", "Chrome OS US English 7", "Android Speech Recognition and Synthesis from Google en-us-x-tpf-local"], "language": "en-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 5 (US)", "name": "Android Speech Recognition and Synthesis from Google en-us-x-sfg-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-sfg-local"], "language": "en-US", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 6 (US)", "name": "Chrome OS US English 8", "language": "en-US", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (US)", "name": "Google US English 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iom-network", "Chrome OS US English 4", "Android Speech Recognition and Synthesis from Google en-us-x-iom-local"], "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (US)", "name": "Google US English 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-iol-network", "Chrome OS US English 3", "Android Speech Recognition and Synthesis from Google en-us-x-iol-local"], "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 3 (US)", "name": "Google US English 6 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-us-x-tpd-network", "Chrome OS US English 6", "Android Speech Recognition and Synthesis from Google en-us-x-tpd-local"], "language": "en-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (UK)", "name": "Google UK English 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gba-network", "Chrome OS UK English 2", "Android Speech Recognition and Synthesis from Google en-gb-x-gba-local", "Android Speech Recognition and Synthesis from Google en-GB-language"], "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (UK)", "name": "Google UK English 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbc-network", "Chrome OS UK English 4", "Android Speech Recognition and Synthesis from Google en-gb-x-gbc-local"], "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 3 (UK)", "name": "Google UK English 6 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbg-network", "Chrome OS UK English 6", "Android Speech Recognition and Synthesis from Google en-gb-x-gbg-local"], "language": "en-GB", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 4 (UK)", "name": "Chrome OS UK English 7", "language": "en-GB", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (UK)", "name": "Google UK English 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-rjs-network", "Chrome OS UK English 1", "Android Speech Recognition and Synthesis from Google en-gb-x-rjs-local"], "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (UK)", "name": "Google UK English 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbb-network", "Chrome OS UK English 3", "Android Speech Recognition and Synthesis from Google en-gb-x-gbb-local"], "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 3 (UK)", "name": "Google UK English 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-gb-x-gbd-network", "Chrome OS UK English 5", "Android Speech Recognition and Synthesis from Google en-gb-x-gbd-local"], "language": "en-GB", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (Australia)", "name": "Google Australian English 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-aua-network", "Chrome OS Australian English 1", "Android Speech Recognition and Synthesis from Google en-au-x-aua-local", "Android Speech Recognition and Synthesis from Google en-AU-language"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (Australia)", "name": "Google Australian English 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-auc-network", "Chrome OS Australian English 3", "Android Speech Recognition and Synthesis from Google en-au-x-auc-local"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (Australia)", "name": "Google Australian English 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-aub-network", "Chrome OS Australian English 2", "Android Speech Recognition and Synthesis from Google en-au-x-aub-local"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (Australia)", "name": "Google Australian English 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google en-au-x-aud-network", "Chrome OS Australian English 4", "Android Speech Recognition and Synthesis from Google en-au-x-aud-local"], "language": "en-AU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 3 (Australia)", "name": "Chrome OS Australian English 5", "language": "en-AU", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 1 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-ena-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-ena-local", "Android Speech Recognition and Synthesis from Google en-IN-language"], "language": "en-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Female voice 2 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-enc-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-enc-local"], "language": "en-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 1 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-end-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-end-local"], "language": "en-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Male voice 2 (India)", "name": "Android Speech Recognition and Synthesis from Google en-in-x-ene-network", "altNames": ["Android Speech Recognition and Synthesis from Google en-in-x-ene-local"], "language": "en-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Elvira", "name": "Microsoft Elvira Online (Natural) - Spanish (Spain)", "language": "es-ES", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Alvaro", "name": "Microsoft Alvaro Online (Natural) - Spanish (Spain)", "language": "es-ES", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dalia", "name": "Microsoft Dalia Online (Natural) - Spanish (Mexico)", "language": "es-MX", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Microsoft Jorge", "name": "Microsoft Jorge Online (Natural) - Spanish (Mexico)", "language": "es-MX", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Elena", "name": "Microsoft Elena Online (Natural) - Spanish (Argentina)", "language": "es-AR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tomas", "name": "Microsoft Tomas Online (Natural) - Spanish (Argentina)", "language": "es-AR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sofia", "name": "Microsoft Sofia Online (Natural) - Spanish (Bolivia)", "language": "es-BO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marcelo", "name": "Microsoft Marcelo Online (Natural) - Spanish (Bolivia)", "language": "es-BO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Catalina", "name": "Microsoft Catalina Online (Natural) - Spanish (Chile)", "language": "es-CL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lorenzo", "name": "Microsoft Lorenzo Online (Natural) - Spanish (Chile)", "language": "es-CL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ximena", "name": "Microsoft Ximena Online (Natural) - Spanish (Colombia)", "language": "es-CO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Salome", "name": "Microsoft Salome Online (Natural) - Spanish (Colombia)", "language": "es-CO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Gonzalo", "name": "Microsoft Gonzalo Online (Natural) - Spanish (Colombia)", "language": "es-CO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maria", "name": "Microsoft Maria Online (Natural) - Spanish (Costa Rica)", "language": "es-CR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Juan", "name": "Microsoft Juan Online (Natural) - Spanish (Costa Rica)", "language": "es-CR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Belkys", "name": "Microsoft Belkys Online (Natural) - Spanish (Cuba)", "language": "es-CU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Manuel", "name": "Microsoft Manuel Online (Natural) - Spanish (Cuba)", "language": "es-CU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Andrea", "name": "Microsoft Andrea Online (Natural) - Spanish (Ecuador)", "language": "es-EC", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Luis", "name": "Microsoft Luis Online (Natural) - Spanish (Ecuador)", "language": "es-EC", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lorena", "name": "Microsoft Lorena Online (Natural) - Spanish (El Salvador)", "language": "es-SV", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rodrigo", "name": "Microsoft Rodrigo Online (Natural) - Spanish (El Salvador)", "language": "es-SV", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Paloma", "name": "Microsoft Paloma Online (Natural) - Spanish (United States)", "language": "es-US", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Alonso", "name": "Microsoft Alonso Online (Natural) - Spanish (United States)", "language": "es-US", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marta", "name": "Microsoft Marta Online (Natural) - Spanish (Guatemala)", "language": "es-GT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Andres", "name": "Microsoft Andres Online (Natural) - Spanish (Guatemala)", "language": "es-GT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Teresa", "name": "Microsoft Teresa Online (Natural) - Spanish (Equatorial Guinea)", "language": "es-GQ", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Javier", "name": "Microsoft Javier Online (Natural) - Spanish (Equatorial Guinea)", "language": "es-GQ", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Karla", "name": "Microsoft Karla Online (Natural) - Spanish (Honduras)", "language": "es-HN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Carlos", "name": "Microsoft Carlos Online (Natural) - Spanish (Honduras)", "language": "es-HN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yolanda", "name": "Microsoft Yolanda Online (Natural) - Spanish (Nicaragua)", "language": "es-NI", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Federico", "name": "Microsoft Federico Online (Natural) - Spanish (Nicaragua)", "language": "es-NI", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Margarita", "name": "Microsoft Margarita Online (Natural) - Spanish (Panama)", "language": "es-PA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Roberto", "name": "Microsoft Roberto Online (Natural) - Spanish (Panama)", "language": "es-PA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tania", "name": "Microsoft Tania Online (Natural) - Spanish (Paraguay)", "language": "es-PY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mario", "name": "Microsoft Mario Online (Natural) - Spanish (Paraguay)", "language": "es-PY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Camila", "name": "Microsoft Camila Online (Natural) - Spanish (Peru)", "language": "es-PE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Alex", "name": "Microsoft Alex Online (Natural) - Spanish (Peru)", "language": "es-PE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Karina", "name": "Microsoft Karina Online (Natural) - Spanish (Puerto Rico)", "language": "es-PR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Victor", "name": "Microsoft Victor Online (Natural) - Spanish (Puerto Rico)", "language": "es-PR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ramona", "name": "Microsoft Ramona Online (Natural) - Spanish (Dominican Republic)", "language": "es-DO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Emilio", "name": "Microsoft Emilio Online (Natural) - Spanish (Dominican Republic)", "language": "es-DO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Valentina", "name": "Microsoft Valentina Online (Natural) - Spanish (Uruguay)", "language": "es-UY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mateo", "name": "Microsoft Mateo Online (Natural) - Spanish (Uruguay)", "language": "es-UY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Paola", "name": "Microsoft Paola Online (Natural) - Spanish (Venezuela)", "language": "es-VE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sebastian", "name": "Microsoft Sebastian Online (Natural) - Spanish (Venezuela)", "language": "es-VE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marisol", "name": "Marisol", "language": "es-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Mónica", "name": "Mónica", "language": "es-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Apple Jorge", "name": "Jorge", "language": "es-ES", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Angelica", "name": "Angelica", "language": "es-MX", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Paulina", "name": "Paulina", "language": "es-MX", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Juan", "name": "Juan", "language": "es-MX", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Isabela", "name": "Isabela", "language": "es-AR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Diego", "name": "Diego", "language": "es-AR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Francisca", "name": "Francisca", "language": "es-CL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Soledad", "name": "Soledad", "language": "es-CO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jimena", "name": "Jimena", "language": "es-CO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Carlos", "name": "Carlos", "language": "es-CO", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voz Google masculina (España)", "name": "Google español", "language": "es-ES", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz Google femenina (Estados Unidos)", "name": "Google español de Estados Unidos", "language": "es-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Helena", "name": "Microsoft Helena - Spanish (Spain)", "language": "es-ES", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Laura", "name": "Microsoft Laura - Spanish (Spain)", "language": "es-ES", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pablo", "name": "Microsoft Pablo - Spanish (Spain)", "language": "es-ES", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sabina", "name": "Microsoft Sabina - Spanish (Mexico)", "language": "es-MX", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Raul", "name": "Microsoft Raul - Spanish (Mexico)", "language": "es-MX", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 1 (España)", "name": "Google español 4 (Natural)", "altNames": ["Chrome OS español 4", "Android Speech Recognition and Synthesis from Google es-es-x-eee-local", "Android Speech Recognition and Synthesis from Google es-ES-language"], "language": "es-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 2 (España)", "name": "Google español 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-es-x-eea-network", "Chrome OS español 1", "Android Speech Recognition and Synthesis from Google es-es-x-eea-local"], "language": "es-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 3 (España)", "name": "Google español 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-es-x-eec-network", "Chrome OS español 2", "Android Speech Recognition and Synthesis from Google es-es-x-eec-local"], "language": "es-ES", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 1 (España)", "name": "Google español 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-es-x-eed-network", "Chrome OS español 3", "Android Speech Recognition and Synthesis from Google es-es-x-eed-local"], "language": "es-ES", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 2 (España)", "name": "Google español 5 (Natural)", "altNames": ["Chrome OS español 5", "Android Speech Recognition and Synthesis from Google es-es-x-eef-local"], "language": "es-ES", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 1 (Estados Unidos)", "name": "Google español de Estados Unidos 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-esc-network", "Chrome OS español de Estados Unidos", "Android Speech Recognition and Synthesis from Google es-us-x-esc-local", "Android Speech Recognition and Synthesis from Google es-US-language"], "language": "es-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz femenina 2 (Estados Unidos)", "name": "Google español de Estados Unidos 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-sfb-network", "Android Speech Recognition and Synthesis from Google es-us-x-sfb-local"], "language": "es-US", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 1 (Estados Unidos)", "name": "Google español de Estados Unidos 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-esd-network", "Android Speech Recognition and Synthesis from Google es-us-x-esd-local"], "language": "es-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 2 (Estados Unidos)", "name": "Google español de Estados Unidos 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google es-us-x-esf-network", "Android Speech Recognition and Synthesis from Google es-us-x-esf-local"], "language": "es-US", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Miren", "name": "Miren", "language": "eu-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Dilara", "name": "Microsoft Dilara Online (Natural) - Persian (Iran)", "language": "fa-IR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Farid", "name": "Microsoft Farid Online (Natural) - Persian (Iran)", "language": "fa-IR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dariush", "name": "Dariush", "language": "fa-IR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Noora", "name": "Microsoft Noora Online (Natural) - Finnish (Finland)", "language": "fi-FI", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Harri", "name": "Microsoft Harri Online (Natural) - Finnish (Finland)", "language": "fi-FI", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Satu", "name": "Satu", "language": "fi-FI", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Onni", "name": "Onni", "language": "fi-FI", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Heidi", "name": "Microsoft Heidi - Finnish (Finland)", "language": "fi-FI", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suomalainen naisääni", "name": "Google Suomi (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fi-fi-x-afi-network", "Chrome OS Suomi", "Android Speech Recognition and Synthesis from Google fi-fi-x-afi-local", "Android Speech Recognition and Synthesis from Google fi-FI-language"], "language": "fi-FI", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vivienne", "name": "Microsoft VivienneMultilingual Online (Natural) - French (France)", "language": "fr-FR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Denise", "name": "Microsoft Denise Online (Natural) - French (France)", "language": "fr-FR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Charline", "name": "Microsoft Charline Online (Natural) - French (Belgium)", "language": "fr-BE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ariane", "name": "Microsoft Ariane Online (Natural) - French (Switzerland)", "language": "fr-CH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Eloise", "name": "Microsoft Eloise Online (Natural) - French (France)", "language": "fr-FR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Remy", "name": "Microsoft RemyMultilingual Online (Natural) - French (France)", "language": "fr-FR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Henri", "name": "Microsoft Henri Online (Natural) - French (France)", "language": "fr-FR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Gerard", "name": "Microsoft Gerard Online (Natural) - French (Belgium)", "language": "fr-BE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fabrice", "name": "Microsoft Fabrice Online (Natural) - French (Switzerland)", "language": "fr-CH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sylvie", "name": "Microsoft Sylvie Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Antoine", "name": "Microsoft Antoine Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Jean", "name": "Microsoft Jean Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Thierry", "name": "Microsoft Thierry Online (Natural) - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Audrey", "name": "Audrey", "language": "fr-FR", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aurélie", "name": "Aurélie", "language": "fr-FR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 0.9, "localizedName": "apple" }, { "label": "Marie", "name": "Marie", "language": "fr-FR", "gender": "female", "quality": ["low"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Thomas", "name": "Thomas", "language": "fr-FR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aude", "name": "Aude", "language": "fr-BE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Chantal", "name": "Chantal", "language": "fr-CA", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Amélie", "name": "Amélie", "language": "fr-CA", "gender": "female", "quality": ["low", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Nicolas", "name": "Nicolas", "language": "fr-CA", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voix Google féminine (France)", "name": "Google français", "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Julie", "name": "Microsoft Julie - French (France)", "language": "fr-FR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hortence", "name": "Microsoft Hortence - French (France)", "language": "fr-FR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Paul", "name": "Microsoft Paul - French (France)", "language": "fr-FR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Caroline", "name": "Microsoft Caroline - French (Canada)", "language": "fr-CA", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Claude", "name": "Microsoft Claude - French (Canada)", "language": "fr-CA", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Guillaume", "name": "Microsoft Claude - French (Switzerland)", "language": "fr-CH", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 1 (France)", "name": "Google français 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-frc-network", "Chrome OS français 4", "Android Speech Recognition and Synthesis from Google fr-fr-x-frc-local", "Android Speech Recognition and Synthesis from Google fr-FR-language"], "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 2 (France)", "name": "Google français 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-fra-network", "Chrome OS français 2", "Android Speech Recognition and Synthesis from Google fr-fr-x-fra-local"], "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 3 (France)", "name": "Google français 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-vlf-network", "Chrome OS français 1", "Android Speech Recognition and Synthesis from Google fr-fr-x-vlf-local"], "language": "fr-FR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 1 (France)", "name": "Google français 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-frd-network", "Chrome OS français 5", "Android Speech Recognition and Synthesis from Google fr-fr-x-frd-local"], "language": "fr-FR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 2 (France)", "name": "Google français 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google fr-fr-x-frb-network", "Chrome OS français 3", "Android Speech Recognition and Synthesis from Google fr-fr-x-frb-local"], "language": "fr-FR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 1 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-caa-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-caa-local", "Android Speech Recognition and Synthesis from Google fr-CA-language"], "language": "fr-CA", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix féminine 2 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-cac-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-cac-local"], "language": "fr-CA", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 1 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-cab-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-cab-local"], "language": "fr-CA", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voix masculine 2 (Canada)", "name": "Android Speech Recognition and Synthesis from Google fr-ca-x-cad-network", "altNames": ["Android Speech Recognition and Synthesis from Google fr-ca-x-cad-local"], "language": "fr-CA", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sabela", "name": "Microsoft Sabela Online (Natural) - Galician (Spain)", "language": "gl-ES", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Roi", "name": "Microsoft Roi Online (Natural) - Galician (Spain)", "language": "gl-ES", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Carmela", "name": "Carmela", "language": "gl-ES", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Hila", "name": "Microsoft Hila Online (Natural) - Hebrew (Israel)", "language": "he-IL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Avri", "name": "Microsoft Avri Online (Natural) - Hebrew (Israel)", "language": "he-IL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Carmit", "name": "Carmit", "language": "he-IL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Asaf", "name": "Microsoft Asaf - Hebrew (Israel)", "language": "he-IL", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול גברי 1", "name": "Android Speech Recognition and Synthesis from Google he-il-x-heb-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-heb-local", "Android Speech Recognition and Synthesis from Google he-IL-language"], "language": "he-IL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול גברי 2", "name": "Android Speech Recognition and Synthesis from Google he-il-x-hec-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-hec-local"], "language": "he-IL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול נשי 1", "name": "Android Speech Recognition and Synthesis from Google he-il-x-hed-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-hed-local"], "language": "he-IL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "קול נשי 2", "name": "Android Speech Recognition and Synthesis from Google he-il-x-hee-network", "altNames": ["Android Speech Recognition and Synthesis from Google he-il-x-hee-local"], "language": "he-IL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Swara", "name": "Microsoft Swara Online (Natural) - Hindi (India)", "language": "hi-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Madhur", "name": "Microsoft Madhur Online (Natural) - Hindi (India)", "language": "hi-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Kiyara", "name": "Kiyara", "language": "hi-IN", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lekha", "name": "Lekha", "language": "hi-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Neel", "name": "Neel", "language": "hi-IN", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "महिला Google आवाज़", "name": "Google हिन्दी", "language": "hi-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kalpana", "name": "Microsoft Kalpana - Hindi (India)", "language": "hi-IN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Hemant", "name": "Microsoft Hemant - Hindi (India)", "language": "hi-IN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "महिला आवाज़ 1", "name": "Google हिन्दी 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hia-network", "Chrome OS हिन्दी 2", "Android Speech Recognition and Synthesis from Google hi-in-x-hia-local", "Android Speech Recognition and Synthesis from Google hi-IN-language"], "language": "hi-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "महिला आवाज़ 2", "name": "Google हिन्दी 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hic-network", "Chrome OS हिन्दी 3", "Android Speech Recognition and Synthesis from Google hi-in-x-hic-local"], "language": "hi-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "महिला आवाज़ 3", "name": "Chrome OS हिन्दी 1", "language": "hi-IN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "पुरुष आवाज 1", "name": "Google हिन्दी 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hid-network", "Chrome OS हिन्दी 4", "Android Speech Recognition and Synthesis from Google hi-in-x-hid-local"], "language": "hi-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "पुरुष आवाज 2", "name": "Google हिन्दी 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hi-in-x-hie-network", "Chrome OS हिन्दी 5", "Android Speech Recognition and Synthesis from Google hi-in-x-hie-local"], "language": "hi-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Gabrijela", "name": "Microsoft Gabrijela Online (Natural) - Croatian (Croatia)", "language": "hr-HR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Srecko", "name": "Microsoft Srecko Online (Natural) - Croatian (Croatia)", "language": "hr-HR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lana", "name": "Lana", "altNames": ["Lana (poboljšani)", "Lana (hrvatski (Hrvatska))"], "language": "hr-HR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Matej", "name": "Microsoft Matej - Croatian (Croatia)", "language": "hr-HR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženski glas", "name": "Android Speech Recognition and Synthesis from Google hr-hr-x-hra-network", "altNames": ["Android Speech Recognition and Synthesis from Google hr-hr-x-hra-local"], "language": "hr-HR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Muški glas", "name": "Android Speech Recognition and Synthesis from Google hr-hr-x-hrb-network", "altNames": ["Android Speech Recognition and Synthesis from Google hr-hr-x-hrb-local", "Android Speech Recognition and Synthesis from Google hr-HR-language"], "language": "hr-HR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Noemi", "name": "Microsoft Noemi Online (Natural) - Hungarian (Hungary)", "language": "hu-HU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tamas", "name": "Microsoft Tamas Online (Natural) - Hungarian (Hungary)", "language": "hu-HU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tünde", "name": "Tünde", "language": "hu-HU", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Szabolcs", "name": "Microsoft Szabolcs - Hungarian (Hungary)", "language": "hu-HU", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Női hang", "name": "Google Magyar (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google hu-hu-x-kfl-network", "Chrome OS Magyar", "Android Speech Recognition and Synthesis from Google hu-hu-x-kfl-local", "Android Speech Recognition and Synthesis from Google hu-HU-language"], "language": "hu-HU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Gadis", "name": "Microsoft Gadis Online (Natural) - Indonesian (Indonesia)", "language": "id-ID", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ardi", "name": "Microsoft Ardi Online (Natural) - Indonesian (Indonesia)", "language": "id-ID", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Damayanti", "name": "Damayanti", "language": "id-ID", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Suara Google wanita", "name": "Google Bahasa Indonesia", "language": "id-ID", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Andika", "name": "Microsoft Andika - Indonesian (Indonesia)", "language": "id-ID", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara wanita 1", "name": "Google Bahasa Indonesia 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-idc-network", "Chrome OS Bahasa Indonesia 1", "Android Speech Recognition and Synthesis from Google id-id-x-idc-local", "Android Speech Recognition and Synthesis from Google id-ID-language"], "language": "id-ID", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara wanita 2", "name": "Google Bahasa Indonesia 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-idd-network", "Chrome OS Bahasa Indonesia 2", "Android Speech Recognition and Synthesis from Google id-id-x-idd-local"], "language": "id-ID", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara laki-laki 1", "name": "Google Bahasa Indonesia 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-ide-network", "Chrome OS Bahasa Indonesia 3", "Android Speech Recognition and Synthesis from Google id-id-x-ide-local"], "language": "id-ID", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara laki-laki 2", "name": "Google Bahasa Indonesia 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google id-id-x-dfz-network", "Chrome OS Bahasa Indonesia 4", "Android Speech Recognition and Synthesis from Google id-id-x-dfz-local"], "language": "id-ID", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Elsa (Alta qualita)", "name": "Microsoft Elsa Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Isabella", "name": "Microsoft Isabella Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Giuseppe", "name": "Microsoft Giuseppe Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Diego", "name": "Microsoft Diego Online (Natural) - Italian (Italy)", "language": "it-IT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Federica", "name": "Federica", "language": "it-IT", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Emma", "name": "Emma", "language": "it-IT", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Alice", "name": "Alice", "language": "it-IT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Paola", "name": "Paola", "language": "it-IT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Luca", "name": "Luca", "language": "it-IT", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voce Google femminile", "name": "Google italiano", "language": "it-IT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Elsa", "name": "Microsoft Elsa - Italian (Italy)", "language": "it-IT", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Cosimo", "name": "Microsoft Cosimo - Italian (Italy)", "language": "it-IT", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce femminile 1", "name": "Google italiano 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-itb-network", "Chrome OS italiano 2", "Android Speech Recognition and Synthesis from Google it-it-x-itb-local", "Android Speech Recognition and Synthesis from Google it-IT-language"], "language": "it-IT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce femminile 2", "name": "Google italiano 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-kda-network", "Chrome OS italiano 1", "Android Speech Recognition and Synthesis from Google it-it-x-kda-local"], "language": "it-IT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce maschile 1", "name": "Google italiano 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-itc-network", "Chrome OS italiano 3", "Android Speech Recognition and Synthesis from Google it-it-x-itc-local"], "language": "it-IT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce maschile 2", "name": "Google italiano 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google it-it-x-itd-network", "Chrome OS italiano 4", "Android Speech Recognition and Synthesis from Google it-it-x-itd-local"], "language": "it-IT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Nanami", "name": "Microsoft Nanami Online (Natural) - Japanese (Japan)", "language": "ja-JP", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Keita", "name": "Microsoft Keita Online (Natural) - Japanese (Japan)", "language": "ja-JP", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "O-Ren", "name": "O-Ren", "language": "ja-JP", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Kyoko", "name": "Kyoko", "language": "ja-JP", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Otoya", "name": "Otoya", "language": "ja-JP", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Hattori", "name": "Hattori", "language": "ja-JP", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google の女性の声", "name": "Google 日本語", "language": "ja-JP", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ayumi", "name": "Microsoft Ayumi - Japanese (Japan)", "language": "ja-JP", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Haruka", "name": "Microsoft Haruka - Japanese (Japan)", "language": "ja-JP", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ichiro", "name": "Microsoft Ichiro - Japanese (Japan)", "language": "ja-JP", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女性の声1", "name": "Google 日本語 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-htm-network", "Chrome OS 日本語 1", "Android Speech Recognition and Synthesis from Google ja-jp-x-htm-local", "Android Speech Recognition and Synthesis from Google ja-JP-language"], "language": "ja-JP", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女性の声2", "name": "Chrome OS 日本語 2", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-jab-network", "Android Speech Recognition and Synthesis from Google ja-jp-x-jab-local"], "language": "ja-JP", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男性の声1", "name": "Google 日本語 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-jac-network", "Chrome OS 日本語 3", "Android Speech Recognition and Synthesis from Google ja-jp-x-jac-local"], "language": "ja-JP", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男性の声2", "name": "Google 日本語 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ja-jp-x-jad-network", "Chrome OS 日本語 4", "Android Speech Recognition and Synthesis from Google ja-jp-x-jad-local"], "language": "ja-JP", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "SunHi", "name": "Microsoft SunHi Online (Natural) - Korean (Korea)", "language": "ko-KR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hyunsu", "name": "Microsoft Hyunsu Online (Natural) - Korean (Korea)", "language": "ko-KR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "InJoon", "name": "Microsoft InJoon Online (Natural) - Korean (Korea)", "language": "ko-KR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yuna", "name": "Yuna", "language": "ko-KR", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jian", "name": "Jian", "language": "ko-KR", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Suhyun", "name": "Suhyun", "language": "ko-KR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Sora", "name": "Sora", "language": "ko-KR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Minsu", "name": "Minsu", "language": "ko-KR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google 여성 음성", "name": "Google 한국의", "language": "ko-KR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Heami", "name": "Microsoft Heami - Korean (Korea)", "language": "ko-KR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "여성 목소리 1", "name": "Google 한국어 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-kob-network", "Chrome OS 한국어 2", "Android Speech Recognition and Synthesis from Google ko-kr-x-kob-local", "Android Speech Recognition and Synthesis from Google ko-KR-language"], "language": "ko-KR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "여성 목소리 2", "name": "Google 한국어 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-ism-network", "Chrome OS 한국어 1", "Android Speech Recognition and Synthesis from Google ko-kr-x-ism-local"], "language": "ko-KR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "남성 1", "name": "Google 한국어 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-koc-network", "Chrome OS 한국어 3", "Android Speech Recognition and Synthesis from Google ko-kr-x-koc-local"], "language": "ko-KR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "남성 2", "name": "Google 한국어 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google ko-kr-x-kod-network", "Chrome OS 한국어 4", "Android Speech Recognition and Synthesis from Google ko-kr-x-kod-local"], "language": "ko-KR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Aarohi", "name": "Microsoft Aarohi Online (Natural) - Marathi (India)", "language": "mr-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Manohar", "name": "Microsoft Manohar Online (Natural) - Marathi (India)", "language": "mr-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ananya", "name": "Ananya", "language": "mr-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "स्त्री आवाज", "name": "Android Speech Recognition and Synthesis from Google mr-in-x-mrf-network", "altNames": ["Android Speech Recognition and Synthesis from Google mr-in-x-mrf-local", "Android Speech Recognition and Synthesis from Google mr-IN-language"], "language": "mr-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Yasmin", "name": "Microsoft Yasmin Online (Natural) - Malay (Malaysia)", "language": "ms-MY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Osman", "name": "Microsoft Osman Online (Natural) - Malay (Malaysia)", "language": "ms-MY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Amira", "name": "Amira", "language": "ms-MY", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Rizwan", "name": "Microsoft Rizwan - Malay (Malaysia)", "language": "ms-MY", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara perempuan 1", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-msc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-msc-local", "Android Speech Recognition and Synthesis from Google ms-MY-language"], "language": "ms-MY", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara perempuan 2", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-mse-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-mse-local"], "language": "ms-MY", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara lelaki 1", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-msd-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-msd-local"], "language": "ms-MY", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Suara lelaki 2", "name": "Android Speech Recognition and Synthesis from Google ms-my-x-msg-network", "altNames": ["Android Speech Recognition and Synthesis from Google ms-my-x-msg-local"], "language": "ms-MY", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pernille", "name": "Microsoft Pernille Online (Natural) - Norwegian (Bokmål, Norway)", "language": "nb-NO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Finn", "name": "Microsoft Finn Online (Natural) - Norwegian (Bokmål Norway)", "language": "nb-NO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Nora", "name": "Nora", "language": "nb-NO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Henrik", "name": "Henrik", "language": "nb-NO", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Jon", "name": "Microsoft Jon - Norwegian (Bokmål Norway)", "language": "nb-NO", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnestemme 1", "name": "Google Norsk Bokmål 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-cfl-network", "Chrome OS Norsk Bokmål 2", "Android Speech Recognition and Synthesis from Google nb-no-x-cfl-local", "Android Speech Recognition and Synthesis from Google nb-NO-language"], "language": "nb-NO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnestemme 2", "name": "Google Norsk Bokmål 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-rfj-network", "Chrome OS Norsk Bokmål 1", "Android Speech Recognition and Synthesis from Google nb-no-x-rfj-local"], "language": "nb-NO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnestemme 3", "name": "Google Norsk Bokmål 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-tfs-network", "Chrome OS Norsk Bokmål 4", "Android Speech Recognition and Synthesis from Google nb-no-x-tfs-local"], "language": "nb-NO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannsstemme 1", "name": "Google Norsk Bokmål 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-cmj-network", "Chrome OS Norsk Bokmål 3", "Android Speech Recognition and Synthesis from Google nb-no-x-cmj-local"], "language": "nb-NO", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannsstemme 2", "name": "Google Norsk Bokmål 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nb-no-x-tmg-network", "Chrome OS Norsk Bokmål 5", "Android Speech Recognition and Synthesis from Google nb-no-x-tmg-local"], "language": "nb-NO", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Colette", "name": "Microsoft Colette Online (Natural) - Dutch (Netherlands)", "language": "nl-NL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Fenna", "name": "Microsoft Fenna Online (Natural) - Dutch (Netherlands)", "language": "nl-NL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Hanna", "name": "Microsoft Hanna Online - Dutch (Netherlands)", "language": "nl-NL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Maarten", "name": "Microsoft Maarten Online (Natural) - Dutch (Netherlands)", "language": "nl-NL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dena", "name": "Microsoft Dena Online (Natural) - Dutch (Belgium)", "language": "nl-BE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Arnaud", "name": "Microsoft Arnaud Online (Natural) - Dutch (Belgium)", "language": "nl-BE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Claire", "name": "Claire", "language": "nl-NL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Xander", "name": "Xander", "language": "nl-NL", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Ellen", "name": "Ellen", "language": "nl-BE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google mannelijke stem", "name": "Google Nederlands", "language": "nl-NL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Frank", "name": "Microsoft Frank - Dutch (Netherlands)", "language": "nl-NL", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem 1 (Nederland)", "name": "Google Nederlands 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-lfc-network", "Chrome OS Nederlands 4", "Android Speech Recognition and Synthesis from Google nl-nl-x-lfc-local", "Android Speech Recognition and Synthesis from Google nl-NL-language"], "language": "nl-NL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem 2 (Nederland)", "name": "Google Nederlands 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-tfb-network", "Chrome OS Nederlands 1", "Android Speech Recognition and Synthesis from Google nl-nl-x-tfb-local"], "language": "nl-NL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem 3 (Nederland)", "name": "Google Nederlands 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-yfr-network", "Chrome OS Nederlands 5", "Android Speech Recognition and Synthesis from Google nl-nl-x-yfr-local"], "language": "nl-NL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannelijke stem 1 (Nederland)", "name": "Google Nederlands 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-bmh-network", "Chrome OS Nederlands 2", "Android Speech Recognition and Synthesis from Google nl-nl-x-bmh-local"], "language": "nl-NL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannelijke stem 2 (Nederland)", "name": "Google Nederlands 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google nl-nl-x-dma-network", "Chrome OS Nederlands 3", "Android Speech Recognition and Synthesis from Google nl-nl-x-dma-local"], "language": "nl-NL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Vrouwelijke stem (België)", "name": "Android Speech Recognition and Synthesis from Google nl-be-x-bec-network", "altNames": ["Android Speech Recognition and Synthesis from Google nl-be-x-bec-local", "Android Speech Recognition and Synthesis from Google nl-BE-language"], "language": "nl-BE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mannelijke stem (België)", "name": "Android Speech Recognition and Synthesis from Google nl-be-x-bed-network", "altNames": ["Android Speech Recognition and Synthesis from Google nl-be-x-bed-local"], "language": "nl-BE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Zofia", "name": "Microsoft Zofia Online (Natural) - Polish (Poland)", "language": "pl-PL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Paulina", "name": "Microsoft Paulina Online - Polish (Poland)", "language": "pl-PL", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Marek", "name": "Microsoft Marek Online (Natural) - Polish (Poland)", "language": "pl-PL", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ewa", "name": "Ewa", "language": "pl-PL", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Zosia", "name": "Zosia", "language": "pl-PL", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Krzysztof", "name": "Krzysztof", "language": "pl-PL", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Żeński głos Google’a", "name": "Google polski", "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Paulina", "name": "Microsoft Paulina - Polish (Poland)", "language": "pl-PL", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Adam", "name": "Microsoft Adam - Polish (Poland)", "language": "pl-PL", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos żeński 1", "name": "Google Polski 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-afb-network", "Chrome OS Polski 2", "Android Speech Recognition and Synthesis from Google pl-pl-x-afb-local", "Android Speech Recognition and Synthesis from Google pl-PL-language"], "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos żeński 2", "name": "Google Polski 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-oda-network", "Chrome OS Polski 1", "Android Speech Recognition and Synthesis from Google pl-pl-x-oda-local"], "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos żeński 3", "name": "Google Polski 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-zfg-network", "Chrome OS Polski 5", "Android Speech Recognition and Synthesis from Google pl-pl-x-zfg-local"], "language": "pl-PL", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos męski 1", "name": "Google Polski 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-bmg-network", "Chrome OS Polski 3", "Android Speech Recognition and Synthesis from Google pl-pl-x-bmg-local"], "language": "pl-PL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Głos męski 2", "name": "Google Polski 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pl-pl-x-jmk-network", "Chrome OS Polski 4", "Android Speech Recognition and Synthesis from Google pl-pl-x-jmk-local"], "language": "pl-PL", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Raquel", "name": "Microsoft Raquel Online (Natural) - Portuguese (Portugal)", "language": "pt-PT", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Duarte", "name": "Microsoft Duarte Online (Natural) - Portuguese (Portugal)", "language": "pt-PT", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Francisca", "name": "Microsoft Francisca Online (Natural) - Portuguese (Brazil)", "language": "pt-BR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Thalita", "name": "Microsoft Thalita Online (Natural) - Portuguese (Brazil)", "language": "pt-BR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Antonio", "name": "Microsoft Antonio Online (Natural) - Portuguese (Brazil)", "language": "pt-BR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Catarina", "name": "Catarina", "language": "pt-PT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Joana", "name": "Joana", "language": "pt-PT", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Joaquim", "name": "Joaquim", "language": "pt-PT", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Fernanda", "name": "Fernanda", "language": "pt-BR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Luciana", "name": "Luciana", "language": "pt-BR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Felipe", "name": "Felipe", "language": "pt-BR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Voz Google (Brasil)", "name": "Google português do Brasil", "language": "pt-BR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Helia", "name": "Microsoft Helia - Portuguese (Portugal)", "language": "pt-PT", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Maria", "name": "Microsoft Maria - Portuguese (Brazil)", "language": "pt-BR", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Daniel", "name": "Microsoft Daniel - Portuguese (Brazil)", "language": "pt-BR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 1 (Portugal)", "name": "Google português de Portugal 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-jfb-network", "Android Speech Recognition and Synthesis from Google pt-pt-x-jfb-local", "Android Speech Recognition and Synthesis from Google pt-PT-language"], "language": "pt-PT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 2 (Portugal)", "name": "Google português de Portugal 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-sfs-network", "Chrome OS português de Portugal", "Android Speech Recognition and Synthesis from Google pt-pt-x-sfs-local"], "language": "pt-PT", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 1 (Portugal)", "name": "Google português de Portugal 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-jmn-network", "Android Speech Recognition and Synthesis from Google pt-pt-x-jmn-local"], "language": "pt-PT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina 2 (Portugal)", "name": "Google português de Portugal 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-pt-x-pmj-network", "Android Speech Recognition and Synthesis from Google pt-pt-x-pmj-local"], "language": "pt-PT", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 1 (Brasil)", "name": "Google português do Brasil 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-br-x-afs-network", "Chrome OS português do Brasil", "Android Speech Recognition and Synthesis from Google pt-br-x-afs-local", "Android Speech Recognition and Synthesis from Google pt-BR-language"], "language": "pt-BR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz feminina 2 (Brasil)", "name": "Google português do Brasil 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-br-x-pte-network", "Android Speech Recognition and Synthesis from Google pt-br-x-pte-local"], "language": "pt-BR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voz masculina (Brasil)", "name": "Google português do Brasil 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google pt-br-x-ptd-network", "Android Speech Recognition and Synthesis from Google pt-br-x-ptd-local"], "language": "pt-BR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Alina", "name": "Microsoft Alina Online (Natural) - Romanian (Romania)", "language": "ro-RO", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Emil", "name": "Microsoft Emil Online (Natural) - Romanian (Romania)", "language": "ro-RO", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ioana", "name": "Ioana", "language": "ro-RO", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Andrei", "name": "Microsoft Andrei - Romanian (Romania)", "language": "ro-RO", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Voce feminină", "name": "Android Speech Recognition and Synthesis from Google ro-ro-x-vfv-network", "altNames": ["Android Speech Recognition and Synthesis from Google ro-ro-x-vfv-local", "Android Speech Recognition and Synthesis from Google ro-RO-language"], "language": "ro-RO", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Svetlana", "name": "Microsoft Svetlana Online (Natural) - Russian (Russia)", "language": "ru-RU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ekaterina", "name": "Microsoft Ekaterina Online - Russian (Russia)", "language": "ru-RU", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Dmitry", "name": "Microsoft Dmitry Online (Natural) - Russian (Russia)", "language": "ru-RU", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Katya", "name": "Katya", "language": "ru-RU", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Milena", "name": "Milena", "language": "ru-RU", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Yuri", "name": "Yuri", "language": "ru-RU", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Google женский голос", "name": "Google русский", "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Irina", "name": "Microsoft Irina - Russian (Russian)", "language": "ru-RU", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pavel", "name": "Microsoft Pavel - Russian (Russian)", "language": "ru-RU", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женский голос 1", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-dfc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-dfc-local"], "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женский голос 2", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-ruc-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-ruc-local"], "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Женский голос 3", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-rue-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-rue-local"], "language": "ru-RU", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Мужской голос 1", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-rud-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-rud-local"], "language": "ru-RU", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Мужской голос 2", "name": "Android Speech Recognition and Synthesis from Google ru-ru-x-ruf-network", "altNames": ["Android Speech Recognition and Synthesis from Google ru-ru-x-ruf-local"], "language": "ru-RU", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Viktoria", "name": "Microsoft Viktoria Online (Natural) - Slovak (Slovakia)", "language": "sk-SK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lukas", "name": "Microsoft Lukas Online (Natural) - Slovak (Slovakia)", "language": "sk-SK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Laura", "name": "Laura", "language": "sk-SK", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Filip", "name": "Microsoft Filip - Slovak (Slovakia)", "language": "sk-SK", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženský hlas", "name": "Google Slovenčina (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sk-sk-x-sfk-network", "Android Speech Recognition and Synthesis from Google sk-sk-x-sfk-local", "Chrome OS Slovenčina", "Android Speech Recognition and Synthesis from Google sk-SK-language"], "language": "sk-SK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Petra", "name": "Microsoft Petra Online (Natural) - Slovenian (Slovenia)", "language": "sl-SI", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Rok", "name": "Microsoft Rok Online (Natural) - Slovenian (Slovenia)", "language": "sl-SI", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Tina", "name": "Tina", "language": "sl-SI", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Lado", "name": "Microsoft Lado - Slovenian (Slovenia)", "language": "sl-SI", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Ženski glas", "name": "Android Speech Recognition and Synthesis from Google sl-si-x-frm-local", "altNames": ["Android Speech Recognition and Synthesis from Google sl-SI-language"], "language": "sl-SI", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Sofie", "name": "Microsoft Sofie Online (Natural) - Swedish (Sweden)", "language": "sv-SE", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mattias", "name": "Microsoft Mattias Online (Natural) - Swedish (Sweden)", "language": "sv-SE", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Klara", "name": "Klara", "language": "sv-SE", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Alva", "name": "Alva", "language": "sv-SE", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Oskar", "name": "Oskar", "language": "sv-SE", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Bengt", "name": "Microsoft Bengt - Swedish (Sweden)", "language": "sv-SE", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnlig röst 1", "name": "Google Svenska 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-lfs-network", "Chrome OS Svenska", "Android Speech Recognition and Synthesis from Google sv-se-x-lfs-local", "Android Speech Recognition and Synthesis from Google sv-SE-language"], "language": "sv-SE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnlig röst 2", "name": "Google Svenska 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-afp-network", "Android Speech Recognition and Synthesis from Google sv-se-x-afp-local"], "language": "sv-SE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kvinnlig röst 3", "name": "Google Svenska 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-cfg-network", "Android Speech Recognition and Synthesis from Google sv-se-x-cfg-local"], "language": "sv-SE", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mansröst 1", "name": "Google Svenska 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-cmh-network", "Android Speech Recognition and Synthesis from Google sv-se-x-cmh-local"], "language": "sv-SE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Mansröst 2", "name": "Google Svenska 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google sv-se-x-dmc-network", "Android Speech Recognition and Synthesis from Google sv-se-x-dmc-local"], "language": "sv-SE", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Pallavi", "name": "Microsoft Pallavi Online (Natural) - Tamil (India)", "language": "ta-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Valluvar", "name": "Microsoft Valluvar Online (Natural) - Tamil (India)", "language": "ta-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Saranya", "name": "Microsoft Saranya Online (Natural) - Tamil (Sri Lanka)", "language": "ta-LK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Kumar", "name": "Microsoft Kumar Online (Natural) - Tamil (Sri Lanka)", "language": "ta-LK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Kani", "name": "Microsoft Kani Online (Natural) - Tamil (Malaysia)", "language": "ta-MY", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Surya", "name": "Microsoft Surya Online (Natural) - Tamil (Malaysia)", "language": "ta-MY", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Venba", "name": "Microsoft Venba Online (Natural) - Tamil (Singapore)", "language": "ta-SG", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Anbu", "name": "Microsoft Anbu Online (Natural) - Tamil (Singapore)", "language": "ta-SG", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Vani", "name": "Vani", "language": "ta-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Valluvar", "name": "Microsoft Valluvar - Tamil (India)", "language": "ta-IN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "பெண் குரல்", "name": "Android Speech Recognition and Synthesis from Google ta-in-x-tac-network", "altNames": ["Android Speech Recognition and Synthesis from Google ta-in-x-tac-local", "Android Speech Recognition and Synthesis from Google ta-IN-language"], "language": "ta-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "ஆண் குரல்", "name": "Android Speech Recognition and Synthesis from Google ta-in-x-tad-network", "altNames": ["Android Speech Recognition and Synthesis from Google ta-in-x-tad-local"], "language": "ta-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Shruti", "name": "Microsoft Shruti Online (Natural) - Telugu (India)", "language": "te-IN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Mohan", "name": "Microsoft Mohan Online (Natural) - Telugu (India)", "language": "te-IN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Geeta", "name": "Geeta", "language": "te-IN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "స్త్రీ స్వరం", "name": "Android Speech Recognition and Synthesis from Google te-in-x-tef-network", "altNames": ["Android Speech Recognition and Synthesis from Google te-in-x-tef-local", "Android Speech Recognition and Synthesis from Google te-IN-language"], "language": "te-IN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "పురుష స్వరం", "name": "Android Speech Recognition and Synthesis from Google te-in-x-tem-network", "altNames": ["Android Speech Recognition and Synthesis from Google te-in-x-tem-local"], "language": "te-IN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Premwadee", "name": "Microsoft Premwadee Online (Natural) - Thai (Thailand)", "language": "th-TH", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Niwat", "name": "Microsoft Niwat Online (Natural) - Thai (Thailand)", "language": "th-TH", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Narisa", "name": "Narisa", "language": "th-TH", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Kanya", "name": "Kanya", "language": "th-TH", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Pattara", "name": "Microsoft Pattara - Thai (Thailand)", "language": "th-TH", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "เสียงผู้หญิง", "name": "Google ไทย (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google th-th-x-mol-network", "Chrome OS ไทย", "Android Speech Recognition and Synthesis from Google th-th-x-mol-local", "Android Speech Recognition and Synthesis from Google th-TH-language"], "language": "th-TH", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Emel", "name": "Microsoft Emel Online (Natural) - Turkish (Turkey)", "language": "tr-TR", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ahmet", "name": "Microsoft Ahmet Online (Natural) - Turkish (Turkey)", "language": "tr-TR", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Yelda", "name": "Yelda", "altNames": ["Yelda (Geliştirilmiş)", "Yelda (Türkçe (Türkiye))"], "language": "tr-TR", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Cem", "name": "Cem", "language": "tr-TR", "gender": "male", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tolga", "name": "Microsoft Tolga - Turkish (Turkey)", "language": "tr-TR", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kadın sesi 1", "name": "Google Türkçe 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-network", "Chrome OS Türkçe 3", "Android Speech Recognition and Synthesis from Google tr-tr-x-cfs-local", "Android Speech Recognition and Synthesis from Google tr-TR-language"], "language": "tr-TR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kadın sesi 2", "name": "Google Türkçe 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-efu-network", "Chrome OS Türkçe 4", "Android Speech Recognition and Synthesis from Google tr-tr-x-efu-local"], "language": "tr-TR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Kadın sesi 3", "name": "Google Türkçe 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-network", "Chrome OS Türkçe 1", "Android Speech Recognition and Synthesis from Google tr-tr-x-mfm-local"], "language": "tr-TR", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Erkek sesi 1", "name": "Google Türkçe 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-ama-network", "Chrome OS Türkçe 2", "Android Speech Recognition and Synthesis from Google tr-tr-x-ama-local"], "language": "tr-TR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Erkek sesi 2", "name": "Google Türkçe 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-network", "Chrome OS Türkçe 5", "Android Speech Recognition and Synthesis from Google tr-tr-x-tmc-local"], "language": "tr-TR", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Polina", "name": "Microsoft Polina Online (Natural) - Ukrainian (Ukraine)", "language": "uk-UA", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Ostap", "name": "Microsoft Ostap Online (Natural) - Ukrainian (Ukraine)", "language": "uk-UA", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Lesya", "name": "Lesya", "language": "uk-UA", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Жіночий голос", "name": "Google українська (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-network", "Chrome OS українська", "Android Speech Recognition and Synthesis from Google uk-ua-x-hfd-local", "Android Speech Recognition and Synthesis from Google uk-UA-language"], "language": "uk-UA", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "HoaiMy", "name": "Microsoft HoaiMy Online (Natural) - Vietnamese (Vietnam)", "language": "vi-VN", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "NamMinh", "name": "Microsoft NamMinh Online (Natural) - Vietnamese (Vietnam)", "language": "vi-VN", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Linh", "name": "Linh", "language": "vi-VN", "gender": "female", "quality": ["low", "normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "An", "name": "Microsoft An - Vietnamese (Vietnam)", "language": "vi-VN", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nữ 1", "name": "Google Tiếng Việt 1 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vic-network", "Chrome OS Tiếng Việt 1", "Android Speech Recognition and Synthesis from Google vi-vn-x-vic-local", "Android Speech Recognition and Synthesis from Google vi-VN-language"], "language": "vi-VN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nữ 2", "name": "Google Tiếng Việt 2 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vid-network", "Chrome OS Tiếng Việt 2", "Android Speech Recognition and Synthesis from Google vi-vn-x-vid-local"], "language": "vi-VN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nữ 3", "name": "Google Tiếng Việt 4 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vif-network", "Chrome OS Tiếng Việt 4", "Android Speech Recognition and Synthesis from Google vi-vn-x-vif-local"], "language": "vi-VN", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nam 1", "name": "Google Tiếng Việt 3 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-vie-network", "Chrome OS Tiếng Việt 3", "Android Speech Recognition and Synthesis from Google vi-vn-x-vie-local"], "language": "vi-VN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Giọng nam 2", "name": "Google Tiếng Việt 5 (Natural)", "altNames": ["Android Speech Recognition and Synthesis from Google vi-vn-x-gft-network", "Chrome OS Tiếng Việt 5", "Android Speech Recognition and Synthesis from Google vi-vn-x-gft-local"], "language": "vi-VN", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Nannan", "name": "Nannan", "language": "wuu-CN", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "HiuGaai", "name": "Microsoft HiuGaai Online (Natural) - Chinese (Cantonese Traditional)", "language": "yue-HK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "HiuMaan", "name": "Microsoft HiuMaan Online (Natural) - Chinese (Hong Kong)", "language": "yue-HK", "gender": "female", "quality": ["veryHigh"], "localizedName": "" }, { "label": "WanLung", "name": "Microsoft WanLung Online (Natural) - Chinese (Hong Kong)", "language": "yue-HK", "gender": "male", "quality": ["veryHigh"], "localizedName": "" }, { "label": "Sinji", "name": "Sinji", "language": "yue-HK", "gender": "female", "quality": ["low", "normal", "high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Aasing", "name": "Aasing", "language": "yue-HK", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "apple" }, { "label": "Tracy", "name": "Microsoft Tracy - Chinese (Traditional, Hong Kong S.A.R.)", "language": "cmn-HK", "gender": "female", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "Danny", "name": "Microsoft Danny - Chinese (Traditional, Hong Kong S.A.R.)", "language": "cmn-HK", "gender": "male", "quality": ["normal"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女聲1", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-jar-network", "altNames": ["Chrome OS 粵語 1", "Android Speech Recognition and Synthesis from Google yue-HK-x-jar-local", "Android Speech Recognition and Synthesis from Google yue-HK-language"], "language": "yue-HK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "女聲2", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yuc-network", "altNames": ["Chrome OS 粵語 2", "Android Speech Recognition and Synthesis from Google yue-HK-x-yuc-local"], "language": "yue-HK", "gender": "female", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲1", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yud-network", "altNames": ["Chrome OS 粵語 3", "Android Speech Recognition and Synthesis from Google yue-HK-x-yud-local"], "language": "yue-HK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲2", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yue-network", "altNames": ["Chrome OS 粵語 5", "Android Speech Recognition and Synthesis from Google yue-HK-x-yue-local"], "language": "yue-HK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }, { "label": "男聲3", "name": "Android Speech Recognition and Synthesis from Google yue-hk-x-yuf-network", "altNames": ["Chrome OS 粵語 5", "Android Speech Recognition and Synthesis from Google yue-HK-x-yuf-local"], "language": "yue-HK", "gender": "male", "quality": ["high"], "recommendedPitch": 1, "recommendedRate": 1, "localizedName": "" }];
-export const quality = { "ar": { "normal": "محسن", "high": "استثنائي" }, "ca": { "normal": "millorada", "high": "prèmium" }, "cmn-CN": { "normal": "优化音质", "high": "高音质" }, "cmn-TW": { "normal": "增強音質", "high": "高音質" }, "cs": { "normal": "vylepšená verze", "high": "prémiový" }, "da": { "normal": "forbedret", "high": "høj kvalitet" }, "de": { "normal": "erweitert", "high": "premium" }, "el": { "normal": "βελτιωμένη", "high": "υψηλής ποιότητας" }, "en": { "normal": "Enhanced", "high": "Premium" }, "es": { "normal": "mejorada", "high": "premium" }, "fi": { "normal": "parannettu", "high": "korkealaatuinen" }, "fr": { "normal": "premium", "high": "de qualité" }, "he": { "normal": "משופר", "high": "פרימיום" }, "hi": { "normal": "बेहतर", "high": "प्रीमियम" }, "hr": { "normal": "poboljšani", "high": "vrhunski" }, "hu": { "normal": "továbbfejlesztett", "high": "prémium" }, "id": { "normal": "Ditingkatkan", "high": "Premium" }, "it": { "normal": "ottimizzata", "high": "premium" }, "ja": { "normal": "拡張", "high": "プレミアム" }, "ko": { "normal": "고품질", "high": "프리미엄" }, "ms": { "normal": "Dipertingkat", "high": "Premium" }, "nb": { "normal": "forbedret", "high": "premium" }, "nl": { "normal": "verbeterd", "high": "premium" }, "pl": { "normal": "rozszerzony", "high": "premium" }, "pt": { "normal": "melhorada", "high": "premium" }, "ro": { "normal": "îmbunătățită", "high": "premium" }, "ru": { "normal": "улучшенный", "high": "высшее качество" }, "sk": { "normal": "vylepšený", "high": "prémiový" }, "sl": { "normal": "izboljšano", "high": "prvovrsten" }, "sv": { "normal": "förbättrad", "high": "premium" }, "th": { "normal": "คุณภาพสูง", "high": "คุณภาพสูง" }, "tr": { "normal": "Geliştirilmiş", "high": "Yüksek Kaliteli" }, "uk": { "normal": "вдосконалений", "high": "високої якості" }, "vi": { "normal": "Nâng cao", "high": "Cao cấp" } };
-export const defaultRegion = { "ar": "ar-SA", "bg": "bg-BG", "bho": "bho-IN", "bn": "bn-IN", "ca": "ca-ES", "cmn": "cmn-CN", "cs": "cs-CZ", "da": "da-DK", "de": "de-DE", "el": "el-GR", "en": "en-US", "es": "es-ES", "eu": "eu-ES", "fa": "fa-IR", "fi": "fi-FI", "fr": "fr-FR", "gl": "gl-ES", "he": "he-IL", "hi": "hi-IN", "hr": "hr-HR", "hu": "hu-HU", "id": "id-ID", "it": "it-IT", "ja": "ja-JP", "ko": "ko-KR", "mr": "mr-IN", "ms": "ms-MY", "nb": "nb-NO", "nl": "nl-NL", "pl": "pl-PL", "pt": "pt-BR", "ro": "ro-RO", "ru": "ru-RU", "sk": "sk-SK", "sl": "sl-SI", "sv": "sv-SE", "ta": "ta-IN", "te": "te-IN", "th": "th-TH", "tr": "tr-TR", "uk": "uk-UA", "vi": "vi-VN", "wuu": "wuu-CN", "yue": "yue-HK" };
-// EOF
diff --git a/build/mjs/src/index.d.ts b/build/mjs/src/index.d.ts
deleted file mode 100644
index 95a6baf..0000000
--- a/build/mjs/src/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * as voicesSelection from "./voices.js";
diff --git a/build/mjs/src/index.js b/build/mjs/src/index.js
deleted file mode 100644
index 95a6baf..0000000
--- a/build/mjs/src/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export * as voicesSelection from "./voices.js";
diff --git a/build/mjs/src/voices.d.ts b/build/mjs/src/voices.d.ts
deleted file mode 100644
index ae50a6a..0000000
--- a/build/mjs/src/voices.d.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { TGender, TQuality, IRecommended } from "./data.gen.js";
-export interface IVoices {
- label: string;
- voiceURI: string;
- name: string;
- language: string;
- gender?: TGender | undefined;
- age?: string | undefined;
- offlineAvailability: boolean;
- quality?: TQuality | undefined;
- pitchControl: boolean;
- recommendedPitch?: number | undefined;
- recommendedRate?: number | undefined;
-}
-export declare function getSpeechSynthesisVoices(): Promise;
-export declare function parseSpeechSynthesisVoices(speechSynthesisVoices: SpeechSynthesisVoice[]): IVoices[];
-export declare function filterOnOfflineAvailability(voices: IVoices[], offline?: boolean): IVoices[];
-export declare function filterOnGender(voices: IVoices[], gender: TGender): IVoices[];
-export declare function filterOnLanguage(voices: IVoices[], language: string | string[]): IVoices[];
-export declare function filterOnQuality(voices: IVoices[], quality: TQuality | TQuality[]): IVoices[];
-export declare function filterOnNovelty(voices: IVoices[]): IVoices[];
-export declare function filterOnVeryLowQuality(voices: IVoices[]): IVoices[];
-export type TReturnFilterOnRecommended = [voicesRecommended: IVoices[], voicesLowerQuality: IVoices[]];
-export declare function filterOnRecommended(voices: IVoices[], _recommended?: IRecommended[]): TReturnFilterOnRecommended;
-export declare function sortByQuality(voices: IVoices[]): IVoices[];
-export declare function sortByName(voices: IVoices[]): IVoices[];
-export declare function sortByGender(voices: IVoices[], genderFirst: TGender): IVoices[];
-export declare function sortByLanguage(voices: IVoices[], preferredLanguage?: string[] | string, localization?: string | undefined): IVoices[];
-export declare function sortByRegion(voices: IVoices[], preferredRegions?: string[] | string, localization?: string | undefined): IVoices[];
-export interface ILanguages {
- label: string;
- code: string;
- count: number;
-}
-export declare function listLanguages(voices: IVoices[], localization?: string | undefined): ILanguages[];
-export declare function listRegions(voices: IVoices[], localization?: string | undefined): ILanguages[];
-export type TGroupVoices = Map;
-export declare function groupByLanguages(voices: IVoices[], preferredLanguage?: string[] | string, localization?: string | undefined): TGroupVoices;
-export declare function groupByRegions(voices: IVoices[], preferredRegions?: string[] | string, localization?: string | undefined): TGroupVoices;
-export declare function groupByKindOfVoices(allVoices: IVoices[]): TGroupVoices;
-export declare function getLanguages(voices: IVoices[], preferredLanguage?: string[] | string, localization?: string | undefined): ILanguages[];
-/**
- * Parse and extract SpeechSynthesisVoices,
- * @returns IVoices[]
- */
-export declare function getVoices(preferredLanguage?: string[] | string, localization?: string): Promise;
diff --git a/build/mjs/src/voices.js b/build/mjs/src/voices.js
deleted file mode 100644
index 04b1105..0000000
--- a/build/mjs/src/voices.js
+++ /dev/null
@@ -1,412 +0,0 @@
-import { novelty, quality, recommended, veryLowQuality, defaultRegion } from "./data.gen.js";
-// export type TOS = 'Android' | 'ChromeOS' | 'iOS' | 'iPadOS' | 'macOS' | 'Windows';
-// export type TBrowser = 'ChromeDesktop' | 'Edge' | 'Firefox' | 'Safari';
-const navigatorLanguages = () => window?.navigator?.languages || [];
-const navigatorLang = () => (navigator?.language || "").split("-")[0].toLowerCase();
-const normalQuality = Object.values(quality).map(({ normal }) => normal);
-const highQuality = Object.values(quality).map(({ high }) => high);
-function compareQuality(a, b) {
- const qualityToNumber = (quality) => {
- switch (quality) {
- case "veryLow": {
- return 0;
- }
- case "low": {
- return 1;
- }
- case "normal": {
- return 2;
- }
- case "high": {
- return 3;
- }
- case "veryHigh": {
- return 4;
- }
- default:
- {
- return -1;
- }
- ;
- }
- };
- return qualityToNumber(b || "low") - qualityToNumber(a || "low");
-}
-;
-export async function getSpeechSynthesisVoices() {
- const a = () => speechSynthesis.getVoices();
- const voices = a();
- if (Array.isArray(voices) && voices.length)
- return voices;
- return new Promise((resolve, _reject) => {
- let counter = 1000;
- const tick = () => {
- if (counter < 1)
- return resolve([]);
- // console.log(counter);
- --counter;
- const voices = a();
- if (Array.isArray(voices) && voices.length)
- return resolve(voices);
- setTimeout(tick, 10);
- };
- setTimeout(tick, 10);
- });
-}
-export function parseSpeechSynthesisVoices(speechSynthesisVoices) {
- const parseAndFormatBCP47 = (lang) => {
- const speechVoiceLang = lang.replace("_", "-");
- if (/\w{2,3}-\w{2,3}/.test(speechVoiceLang)) {
- return `${speechVoiceLang.split("-")[0].toLowerCase()}-${speechVoiceLang.split("-")[1].toUpperCase()}`;
- }
- // bad formated !?
- return lang;
- };
- return speechSynthesisVoices.map((speechVoice) => ({
- label: speechVoice.name,
- voiceURI: speechVoice.voiceURI,
- name: speechVoice.name,
- language: parseAndFormatBCP47(speechVoice.lang),
- gender: undefined,
- age: undefined,
- offlineAvailability: speechVoice.localService,
- quality: undefined,
- pitchControl: true,
- recommendedPitch: undefined,
- recomendedRate: undefined,
- }));
-}
-export function filterOnOfflineAvailability(voices, offline = true) {
- return voices.filter(({ offlineAvailability }) => {
- return offlineAvailability === offline;
- });
-}
-export function filterOnGender(voices, gender) {
- return voices.filter(({ gender: voiceGender }) => {
- return voiceGender === gender;
- });
-}
-export function filterOnLanguage(voices, language) {
- language = Array.isArray(language) ? language : [language];
- language = language.map((l) => extractLangRegionFromBCP47(l)[0]);
- return voices.filter(({ language: voiceLanguage }) => {
- const [lang] = extractLangRegionFromBCP47(voiceLanguage);
- return language.includes(lang);
- });
-}
-export function filterOnQuality(voices, quality) {
- quality = Array.isArray(quality) ? quality : [quality];
- return voices.filter(({ quality: voiceQuality }) => {
- return quality.some((qual) => qual === voiceQuality);
- });
-}
-export function filterOnNovelty(voices) {
- return voices.filter(({ name }) => {
- return !novelty.includes(name);
- });
-}
-export function filterOnVeryLowQuality(voices) {
- return voices.filter(({ name }) => {
- return !veryLowQuality.find((v) => name.startsWith(v));
- });
-}
-function updateVoiceInfo(recommendedVoice, voice) {
- voice.label = recommendedVoice.label;
- voice.gender = recommendedVoice.gender;
- voice.recommendedPitch = recommendedVoice.recommendedPitch;
- voice.recommendedRate = recommendedVoice.recommendedRate;
- return voice;
-}
-export function filterOnRecommended(voices, _recommended = recommended) {
- const voicesRecommended = [];
- const voicesLowerQuality = [];
- recommendedVoiceLoop: for (const recommendedVoice of _recommended) {
- if (Array.isArray(recommendedVoice.quality) && recommendedVoice.quality.length > 1) {
- const voicesFound = voices.filter(({ name }) => name.startsWith(recommendedVoice.name));
- if (voicesFound.length) {
- for (const qualityTested of ["high", "normal"]) {
- for (let i = 0; i < voicesFound.length; i++) {
- const voice = voicesFound[i];
- const rxp = /^.*\((.*)\)$/;
- if (rxp.test(voice.name)) {
- const res = rxp.exec(voice.name);
- const maybeQualityString = res ? res[1] || "" : "";
- const qualityDataArray = qualityTested === "high" ? highQuality : normalQuality;
- if (recommendedVoice.quality.includes(qualityTested) && qualityDataArray.includes(maybeQualityString)) {
- voice.quality = qualityTested;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- voicesFound.splice(i, 1);
- voicesLowerQuality.push(...(voicesFound.map((v) => {
- v.quality = "low"; // Todo need to be more precise for 'normal' quality voices
- return updateVoiceInfo(recommendedVoice, v);
- })));
- continue recommendedVoiceLoop;
- }
- }
- }
- }
- const voice = voicesFound[0];
- for (let i = 1; i < voicesFound.length; i++) {
- voicesLowerQuality.push(voicesFound[i]);
- }
- voice.quality = voicesFound.length > 3 ? "veryHigh" : voicesFound.length > 2 ? "high" : "normal";
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- }
- }
- else if (Array.isArray(recommendedVoice.altNames) && recommendedVoice.altNames.length) {
- const voiceFound = voices.find(({ name }) => name === recommendedVoice.name);
- if (voiceFound) {
- const voice = voiceFound;
- voice.quality = Array.isArray(recommendedVoice.quality) ? recommendedVoice.quality[0] : undefined;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- // voice Name found so altNames array must be filter and push to voicesLowerQuality
- const altNamesVoicesFound = voices.filter(({ name }) => recommendedVoice.altNames.includes(name));
- // TODO: Typescript bug type assertion doesn't work, need to force the compiler with the Non-null Assertion Operator
- voicesLowerQuality.push(...(altNamesVoicesFound.map((v) => {
- v.quality = recommendedVoice.quality[0];
- return updateVoiceInfo(recommendedVoice, v);
- })));
- }
- else {
- // filter voices on altNames, keep the first and push the remaining to voicesLowerQuality
- const altNamesVoicesFound = voices.filter(({ name }) => recommendedVoice.altNames.includes(name));
- if (altNamesVoicesFound.length) {
- const voice = altNamesVoicesFound.shift();
- voice.quality = Array.isArray(recommendedVoice.quality) ? recommendedVoice.quality[0] : undefined;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- voicesLowerQuality.push(...(altNamesVoicesFound.map((v) => {
- v.quality = recommendedVoice.quality[0];
- return updateVoiceInfo(recommendedVoice, v);
- })));
- }
- }
- }
- else {
- const voiceFound = voices.find(({ name }) => name === recommendedVoice.name);
- if (voiceFound) {
- const voice = voiceFound;
- voice.quality = Array.isArray(recommendedVoice.quality) ? recommendedVoice.quality[0] : undefined;
- voicesRecommended.push(updateVoiceInfo(recommendedVoice, voice));
- }
- }
- }
- return [voicesRecommended, voicesLowerQuality];
-}
-const extractLangRegionFromBCP47 = (l) => [l.split("-")[0].toLowerCase(), l.split("-")[1]?.toUpperCase()];
-export function sortByQuality(voices) {
- return voices.sort(({ quality: qa }, { quality: qb }) => {
- return compareQuality(qa, qb);
- });
-}
-export function sortByName(voices) {
- return voices.sort(({ name: na }, { name: nb }) => {
- return na.localeCompare(nb);
- });
-}
-export function sortByGender(voices, genderFirst) {
- return voices.sort(({ gender: ga }, { gender: gb }) => {
- return ga === gb ? 0 : ga === genderFirst ? -1 : gb === genderFirst ? -1 : 1;
- });
-}
-function orderByPreferredLanguage(preferredLanguage) {
- preferredLanguage = Array.isArray(preferredLanguage) ? preferredLanguage :
- preferredLanguage ? [preferredLanguage] : [];
- return [...(new Set([...preferredLanguage, ...navigatorLanguages()]))];
-}
-function orderByPreferredRegion(preferredLanguage) {
- preferredLanguage = Array.isArray(preferredLanguage) ? preferredLanguage :
- preferredLanguage ? [preferredLanguage] : [];
- const regionByDefaultArray = Object.values(defaultRegion);
- return [...(new Set([...preferredLanguage, ...navigatorLanguages(), ...regionByDefaultArray]))];
-}
-const getLangFromBCP47Array = (a) => {
- return [...(new Set(a.map((v) => extractLangRegionFromBCP47(v)[0]).filter((v) => !!v)))];
-};
-const getRegionFromBCP47Array = (a) => {
- return [...(new Set(a.map((v) => (extractLangRegionFromBCP47(v)[1] || "").toUpperCase()).filter((v) => !!v)))];
-};
-export function sortByLanguage(voices, preferredLanguage = [], localization = navigatorLang()) {
- const languages = getLangFromBCP47Array(orderByPreferredLanguage(preferredLanguage));
- const voicesSorted = [];
- for (const lang of languages) {
- voicesSorted.push(...voices.filter(({ language: voiceLanguage }) => lang === extractLangRegionFromBCP47(voiceLanguage)[0]));
- }
- let langueName = undefined;
- if (localization) {
- try {
- langueName = new Intl.DisplayNames([localization], { type: 'language' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- const remainingVoices = voices.filter((v) => !voicesSorted.includes(v));
- remainingVoices.sort(({ language: a }, { language: b }) => {
- let nameA = a, nameB = b;
- try {
- if (langueName) {
- nameA = langueName.of(extractLangRegionFromBCP47(a)[0]) || a;
- nameB = langueName.of(extractLangRegionFromBCP47(b)[0]) || b;
- }
- }
- catch (e) {
- // ignore
- }
- return nameA.localeCompare(nameB);
- });
- return [...voicesSorted, ...remainingVoices];
-}
-export function sortByRegion(voices, preferredRegions = [], localization = navigatorLang()) {
- const regions = getRegionFromBCP47Array(orderByPreferredRegion(preferredRegions));
- const voicesSorted = [];
- for (const reg of regions) {
- voicesSorted.push(...voices.filter(({ language: voiceLanguage }) => reg === extractLangRegionFromBCP47(voiceLanguage)[1]));
- }
- let regionName = undefined;
- if (localization) {
- try {
- regionName = new Intl.DisplayNames([localization], { type: 'region' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- const remainingVoices = voices.filter((v) => !voicesSorted.includes(v));
- remainingVoices.sort(({ language: a }, { language: b }) => {
- let nameA = a, nameB = b;
- try {
- if (regionName) {
- nameA = regionName.of(extractLangRegionFromBCP47(a)[1]) || a;
- nameB = regionName.of(extractLangRegionFromBCP47(b)[1]) || b;
- }
- }
- catch (e) {
- // ignore
- }
- return nameA.localeCompare(nameB);
- });
- return [...voicesSorted, ...remainingVoices];
-}
-export function listLanguages(voices, localization = navigatorLang()) {
- let langueName = undefined;
- if (localization) {
- try {
- langueName = new Intl.DisplayNames([localization], { type: 'language' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- return voices.reduce((acc, cv) => {
- const [lang] = extractLangRegionFromBCP47(cv.language);
- let name = lang;
- try {
- if (langueName) {
- name = langueName.of(lang) || lang;
- }
- }
- catch (e) {
- console.error("langueName.of throw an error with ", lang, e);
- }
- const found = acc.find(({ code }) => code === lang);
- if (found) {
- found.count++;
- }
- else {
- acc.push({ code: lang, count: 1, label: name });
- }
- return acc;
- }, []);
-}
-export function listRegions(voices, localization = navigatorLang()) {
- let regionName = undefined;
- if (localization) {
- try {
- regionName = new Intl.DisplayNames([localization], { type: 'region' });
- }
- catch (e) {
- console.error("Intl.DisplayNames throw an exception with ", localization, e);
- }
- }
- return voices.reduce((acc, cv) => {
- const [, region] = extractLangRegionFromBCP47(cv.language);
- let name = region;
- try {
- if (regionName) {
- name = regionName.of(region) || region;
- }
- }
- catch (e) {
- console.error("regionName.of throw an error with ", region, e);
- }
- const found = acc.find(({ code }) => code === region);
- if (found) {
- found.count++;
- }
- else {
- acc.push({ code: region, count: 1, label: name });
- }
- return acc;
- }, []);
-}
-export function groupByLanguages(voices, preferredLanguage = [], localization = navigatorLang()) {
- const voicesSorted = sortByLanguage(voices, preferredLanguage, localization);
- const languagesStructure = listLanguages(voicesSorted, localization);
- const res = new Map();
- for (const { code, label } of languagesStructure) {
- res.set(label, voicesSorted
- .filter(({ language: voiceLang }) => {
- const [l] = extractLangRegionFromBCP47(voiceLang);
- return l === code;
- }));
- }
- return res;
-}
-export function groupByRegions(voices, preferredRegions = [], localization = navigatorLang()) {
- const voicesSorted = sortByRegion(voices, preferredRegions, localization);
- const languagesStructure = listRegions(voicesSorted, localization);
- const res = new Map();
- for (const { code, label } of languagesStructure) {
- res.set(label, voicesSorted
- .filter(({ language: voiceLang }) => {
- const [, r] = extractLangRegionFromBCP47(voiceLang);
- return r === code;
- }));
- }
- return res;
-}
-export function groupByKindOfVoices(allVoices) {
- const [recommendedVoices, lowQualityVoices] = filterOnRecommended(allVoices);
- const remainingVoice = allVoices.filter((v) => !recommendedVoices.includes(v) && !lowQualityVoices.includes(v));
- const noveltyFiltered = filterOnNovelty(remainingVoice);
- const noveltyVoices = remainingVoice.filter((v) => !noveltyFiltered.includes(v));
- const veryLowQualityFiltered = filterOnVeryLowQuality(remainingVoice);
- const veryLowQualityVoices = remainingVoice.filter((v) => !veryLowQualityFiltered.includes(v));
- const remainingVoiceFiltered = filterOnNovelty(filterOnVeryLowQuality(remainingVoice));
- const res = new Map();
- res.set("recommendedVoices", recommendedVoices);
- res.set("lowerQuality", lowQualityVoices);
- res.set("novelty", noveltyVoices);
- res.set("veryLowQuality", veryLowQualityVoices);
- res.set("remaining", remainingVoiceFiltered);
- return res;
-}
-export function getLanguages(voices, preferredLanguage = [], localization = navigatorLang()) {
- const group = groupByLanguages(voices, preferredLanguage, localization);
- return Array.from(group.entries()).map(([label, _voices]) => {
- return { label, count: _voices.length, code: extractLangRegionFromBCP47(_voices[0]?.language || "")[0] };
- });
-}
-/**
- * Parse and extract SpeechSynthesisVoices,
- * @returns IVoices[]
- */
-export async function getVoices(preferredLanguage, localization) {
- const allVoices = parseSpeechSynthesisVoices(await getSpeechSynthesisVoices());
- const [recommendedVoices, lowQualityVoices] = filterOnRecommended(allVoices);
- const remainingVoice = allVoices.filter((v) => !recommendedVoices.includes(v) && !lowQualityVoices.includes(v));
- const remainingVoiceFiltered = filterOnNovelty(filterOnVeryLowQuality(remainingVoice));
- const voices = [recommendedVoices, remainingVoiceFiltered].flat();
- const voicesSorted = sortByLanguage(sortByQuality(voices), preferredLanguage, localization || navigatorLang());
- return voicesSorted;
-}
diff --git a/build/mjs/test/voices.test.d.ts b/build/mjs/test/voices.test.d.ts
deleted file mode 100644
index cb0ff5c..0000000
--- a/build/mjs/test/voices.test.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export {};
diff --git a/build/mjs/test/voices.test.js b/build/mjs/test/voices.test.js
deleted file mode 100644
index e24560d..0000000
--- a/build/mjs/test/voices.test.js
+++ /dev/null
@@ -1,524 +0,0 @@
-import test from "ava";
-import { filterOnRecommended, groupByLanguages, sortByLanguage, groupByRegions } from "../src/voices.js";
-// import { getVoices } from "../src/voices.js";
-test('dumb test', t => {
- t.deepEqual([], []);
-});
-test.before(t => {
- // This runs before all tests
- globalThis.window = { navigator: { languages: [] } };
-});
-test('sortByLanguage: Empty preferred language list', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, [], "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'en-US');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'fr-FR');
-});
-test('sortByLanguage: Preferred language list with one language', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, ['fr-FR'], "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'fr-FR');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'en-US');
-});
-test('sortByLanguage: Preferred language list with multiple languages', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 4', voiceURI: 'uri4', name: 'Name 4', language: 'es-ES', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, ['fr-FR', 'es-ES'], "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'fr-FR');
- t.true(result[1].language === 'es-ES');
- t.true(result[2].language === 'en-US');
- t.true(result[3].language === 'en-US');
-});
-test('sortByLanguage: No matching languages', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, ['de-DE'], "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'en-US');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'fr-FR');
-});
-test('sortByLanguage: Preferred language list is not an array', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, 'en-US', "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'en-US');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'fr-FR');
-});
-test('sortByLanguage: Preferred language undefined and navigator langua', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, 'en-US', "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'en-US');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'fr-FR');
-});
-test('sortByLanguage: Preferred language list with one language and navigator.languages', t => {
- globalThis.window.navigator.languages = ['fr-FR', 'en-US'];
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, ['fr-FR'], "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'fr-FR');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'en-US');
-});
-test('sortByLanguage: Preferred language list with multiple languages and navigator.languages', t => {
- globalThis.window.navigator.languages = ['fr-FR', 'en-US'];
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 4', voiceURI: 'uri4', name: 'Name 4', language: 'es-ES', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, ['fr-FR', 'es-ES'], "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'fr-FR');
- t.true(result[1].language === 'es-ES');
- t.true(result[2].language === 'en-US');
- t.true(result[3].language === 'en-US');
-});
-test('sortByLanguage: No matching languages and navigator.languages', t => {
- globalThis.window.navigator.languages = ['de-DE', 'en-US'];
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, ['de-DE'], "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'en-US');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'fr-FR');
-});
-test('sortByLanguage: Preferred language list is not an array and navigator.languages', t => {
- globalThis.window.navigator.languages = ['fr-FR', 'en-US'];
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const result = sortByLanguage(voices, 'en-US', "");
- t.true(result.length === voices.length);
- t.true(result[0].language === 'en-US');
- t.true(result[1].language === 'en-US');
- t.true(result[2].language === 'fr-FR');
-});
-test('filterOnRecommended: Empty input', t => {
- const voices = [];
- const result = filterOnRecommended(voices);
- t.deepEqual(result, [[], []]);
-});
-test('filterOnRecommended: No recommended voices', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- ];
- const result = filterOnRecommended(voices, []);
- t.deepEqual(result, [[], []]);
-});
-test('filterOnRecommended: Single recommended voice with single quality', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- ];
- const recommended = [
- { name: 'Name 1', label: 'Voice 1', quality: ['high'], language: 'en-US', localizedName: "" },
- ];
- const result = filterOnRecommended(voices, recommended);
- t.deepEqual(result, [
- [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- [],
- ]);
-});
-test('filterOnRecommended: Single recommended voice with multiple qualities', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- ];
- const recommended = [
- { name: 'Name 1', label: 'Voice 1', quality: ['high', 'normal'], language: 'en-US', localizedName: "" },
- ];
- const result = filterOnRecommended(voices, recommended);
- t.deepEqual(result, [
- [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'normal', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- [],
- ]);
-});
-test('filterOnRecommended: Single recommended voice with multiple qualities and remaining lowQuality', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 1 (Premium)', language: 'en-US', offlineAvailability: true, pitchControl: true },
- ];
- const recommended = [
- { name: 'Name 1', label: 'Voice 1', quality: ['high', 'normal'], language: 'en-US', localizedName: "" },
- ];
- const result = filterOnRecommended(voices, recommended);
- t.deepEqual(result, [
- [
- { label: 'Voice 1', voiceURI: 'uri3', name: 'Name 1 (Premium)', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'low', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- ]);
-});
-test('filterOnRecommended: Multiple recommended voices', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- ];
- const recommended = [
- { name: 'Name 1', label: 'Voice 1', quality: ['high'], language: 'en-US', localizedName: "" },
- { name: 'Name 2', label: 'Voice 2', quality: ['normal'], language: 'es-ES', localizedName: "" },
- ];
- const result = filterOnRecommended(voices, recommended);
- t.deepEqual(result, [
- [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false, quality: 'normal', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- [],
- ]);
-});
-test('filterOnRecommended: Recommended voices with altNames', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 1-1', voiceURI: 'uri1-1', name: 'Name 1 with an altNames', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- ];
- const recommended = [
- { name: 'Name 1', label: 'Voice 1', quality: ['high'], altNames: ['Name 1 with an altNames'], language: 'en-US', localizedName: "" },
- { name: 'Name 2', label: 'Voice 2', quality: ['normal'], language: 'es-ES', localizedName: "" },
- ];
- const result = filterOnRecommended(voices, recommended);
- t.deepEqual(result, [
- [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false, quality: 'normal', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- [
- { label: 'Voice 1', voiceURI: 'uri1-1', name: 'Name 1 with an altNames', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- ]);
-});
-test('filterOnRecommended: Recommended voices with altNames only and voices not in name', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1 with an altNames', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- ];
- const recommended = [
- { name: 'Name 1', label: 'Voice 1', quality: ['high'], altNames: ['Name 1 with an altNames'], language: 'en-US', localizedName: "" },
- { name: 'Name 2', label: 'Voice 2', quality: ['normal'], language: 'es-ES', localizedName: "" },
- ];
- const result = filterOnRecommended(voices, recommended);
- t.deepEqual(result, [
- [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1 with an altNames', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false, quality: 'normal', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- [],
- ]);
-});
-test('filterOnRecommended: Recommended voices with multiple altNames and voices not in name', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1 with an altNames', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 1-1', voiceURI: 'uri1-1', name: 'Name 1 with a second altNames', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- ];
- const recommended = [
- { name: 'Name 1', label: 'Voice 1', quality: ['high'], altNames: ['Name 1 with an altNames', 'Name 1 with a second altNames'], language: 'en-US', localizedName: "" },
- { name: 'Name 2', label: 'Voice 2', quality: ['normal'], language: 'es-ES', localizedName: "" },
- ];
- const result = filterOnRecommended(voices, recommended);
- t.deepEqual(result, [
- [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1 with an altNames', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'es-ES', offlineAvailability: false, pitchControl: false, quality: 'normal', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- [
- { label: 'Voice 1', voiceURI: 'uri1-1', name: 'Name 1 with a second altNames', language: 'en-US', offlineAvailability: true, pitchControl: true, quality: 'high', recommendedRate: undefined, recommendedPitch: undefined, gender: undefined },
- ],
- ]);
-});
-test('groupByLanguage: ', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 4', voiceURI: 'uri4', name: 'Name 4', language: 'es-ES', offlineAvailability: true, pitchControl: true },
- ];
- const result = groupByLanguages(voices, ['fr-FR', 'es-ES'], "");
- t.deepEqual(result, new Map([
- ['fr', [
- {
- label: 'Voice 2',
- language: 'fr-FR',
- name: 'Name 2',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri2',
- },
- ]],
- ['es', [
- {
- label: 'Voice 4',
- language: 'es-ES',
- name: 'Name 4',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri4',
- },
- ]],
- ['en', [
- {
- label: 'Voice 1',
- language: 'en-US',
- name: 'Name 1',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri1',
- },
- {
- label: 'Voice 3',
- language: 'en-US',
- name: 'Name 3',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri3',
- },
- ]],
- ]));
-});
-test('groupByLanguage: localized en', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 4', voiceURI: 'uri4', name: 'Name 4', language: 'es-ES', offlineAvailability: true, pitchControl: true },
- ];
- const result = groupByLanguages(voices, ['fr-FR', 'es-ES'], "en");
- t.deepEqual(result, new Map([
- ['French', [
- {
- label: 'Voice 2',
- language: 'fr-FR',
- name: 'Name 2',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri2',
- },
- ]],
- ['Spanish', [
- {
- label: 'Voice 4',
- language: 'es-ES',
- name: 'Name 4',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri4',
- },
- ]],
- ['English', [
- {
- label: 'Voice 1',
- language: 'en-US',
- name: 'Name 1',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri1',
- },
- {
- label: 'Voice 3',
- language: 'en-US',
- name: 'Name 3',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri3',
- },
- ]],
- ]));
-});
-test('groupByRegion: ', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-GB', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 4', voiceURI: 'uri4', name: 'Name 4', language: 'es-ES', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 5', voiceURI: 'uri5', name: 'Name 5', language: 'en-CA', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 6', voiceURI: 'uri6', name: 'Name 6', language: 'fr-CA', offlineAvailability: true, pitchControl: true },
- ];
- const result = groupByRegions(voices, ['fr-FR', 'es-ES'], "");
- t.deepEqual(result, new Map([
- ['FR', [
- {
- label: 'Voice 2',
- language: 'fr-FR',
- name: 'Name 2',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri2',
- },
- ]],
- ['ES', [
- {
- label: 'Voice 4',
- language: 'es-ES',
- name: 'Name 4',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri4',
- },
- ]],
- ['US', [
- {
- label: 'Voice 1',
- language: 'en-US',
- name: 'Name 1',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri1',
- },
- ]],
- ['CA', [
- {
- label: 'Voice 5',
- language: 'en-CA',
- name: 'Name 5',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri5',
- },
- {
- label: 'Voice 6',
- language: 'fr-CA',
- name: 'Name 6',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri6',
- },
- ]],
- ['GB', [
- {
- label: 'Voice 3',
- language: 'en-GB',
- name: 'Name 3',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri3',
- },
- ]],
- ]));
-});
-test('groupByRegion: localized fr', t => {
- const voices = [
- { label: 'Voice 1', voiceURI: 'uri1', name: 'Name 1', language: 'en-US', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 2', voiceURI: 'uri2', name: 'Name 2', language: 'fr-FR', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 3', voiceURI: 'uri3', name: 'Name 3', language: 'en-GB', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 4', voiceURI: 'uri4', name: 'Name 4', language: 'es-ES', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 5', voiceURI: 'uri5', name: 'Name 5', language: 'en-CA', offlineAvailability: true, pitchControl: true },
- { label: 'Voice 6', voiceURI: 'uri6', name: 'Name 6', language: 'fr-CA', offlineAvailability: true, pitchControl: true },
- ];
- const result = groupByRegions(voices, ['fr-FR', 'es-ES'], "fr");
- t.deepEqual(result, new Map([
- ['France', [
- {
- label: 'Voice 2',
- language: 'fr-FR',
- name: 'Name 2',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri2',
- },
- ]],
- ['Espagne', [
- {
- label: 'Voice 4',
- language: 'es-ES',
- name: 'Name 4',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri4',
- },
- ]],
- ['États-Unis', [
- {
- label: 'Voice 1',
- language: 'en-US',
- name: 'Name 1',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri1',
- },
- ]],
- ['Canada', [
- {
- label: 'Voice 5',
- language: 'en-CA',
- name: 'Name 5',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri5',
- },
- {
- label: 'Voice 6',
- language: 'fr-CA',
- name: 'Name 6',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri6',
- },
- ]],
- ['Royaume-Uni', [
- {
- label: 'Voice 3',
- language: 'en-GB',
- name: 'Name 3',
- offlineAvailability: true,
- pitchControl: true,
- voiceURI: 'uri3',
- },
- ]],
- ]));
-});
diff --git a/demo/script.js b/demo/script.js
index 260ed16..c30455c 100644
--- a/demo/script.js
+++ b/demo/script.js
@@ -1,5 +1,5 @@
-import { voicesSelection } from "../build/mjs/src/index.js";
+import { voicesSelection } from "../build/mjs/index.js";
const { getSpeechSynthesisVoices, parseSpeechSynthesisVoices, filterOnNovelty, filterOnVeryLowQuality,
filterOnRecommended, sortByLanguage, sortByQuality, getVoices, groupByKindOfVoices, groupByRegions,
getLanguages, filterOnOfflineAvailability, listLanguages, filterOnGender, filterOnLanguage } = voicesSelection;
@@ -212,4 +212,4 @@ const content = () => html`
`;
-viewRender();
\ No newline at end of file
+viewRender();
diff --git a/package-lock.json b/package-lock.json
index 4cd02c1..7e2a9cd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"devDependencies": {
"@ava/typescript": "^5.0.0",
"ava": "^6.1.3",
+ "cpy-cli": "^5.0.0",
"http-server": "^14.1.1",
"rimraf": "^6.0.1",
"typescript": "^5.5.4"
@@ -301,6 +302,23 @@
"node": ">= 6.0.0"
}
},
+ "node_modules/aggregate-error": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz",
+ "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^4.0.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
@@ -639,6 +657,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/clean-stack": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz",
+ "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cli-truncate": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
@@ -830,6 +864,174 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/cp-file": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-10.0.0.tgz",
+ "integrity": "sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.10",
+ "nested-error-stacks": "^2.1.1",
+ "p-event": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cp-file/node_modules/p-event": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz",
+ "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-timeout": "^5.0.2"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cp-file/node_modules/p-timeout": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz",
+ "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cpy-cli": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-5.0.0.tgz",
+ "integrity": "sha512-fb+DZYbL9KHc0BC4NYqGRrDIJZPXUmjjtqdw4XRRg8iV8dIfghUX/WiL+q4/B/KFTy3sK6jsbUhBaz0/Hxg7IQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cpy": "^10.1.0",
+ "meow": "^12.0.1"
+ },
+ "bin": {
+ "cpy": "cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cpy-cli/node_modules/cpy": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/cpy/-/cpy-10.1.0.tgz",
+ "integrity": "sha512-VC2Gs20JcTyeQob6UViBLnyP0bYHkBh6EiKzot9vi2DmeGlFT9Wd7VG3NBrkNx/jYvFBeyDOMMHdHQhbtKLgHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arrify": "^3.0.0",
+ "cp-file": "^10.0.0",
+ "globby": "^13.1.4",
+ "junk": "^4.0.1",
+ "micromatch": "^4.0.5",
+ "nested-error-stacks": "^2.1.1",
+ "p-filter": "^3.0.0",
+ "p-map": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cpy-cli/node_modules/globby": {
+ "version": "13.2.2",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz",
+ "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.3.0",
+ "ignore": "^5.2.4",
+ "merge2": "^1.4.1",
+ "slash": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cpy-cli/node_modules/p-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz",
+ "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-map": "^5.1.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cpy-cli/node_modules/p-filter/node_modules/p-map": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz",
+ "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cpy-cli/node_modules/p-map": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-6.0.0.tgz",
+ "integrity": "sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cpy-cli/node_modules/slash": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
+ "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -931,6 +1133,29 @@
"node": ">=8"
}
},
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dir-glob/node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -1881,6 +2106,19 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/junk": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz",
+ "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/load-json-file": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz",
@@ -1982,6 +2220,19 @@
"url": "https://github.com/sindresorhus/memoize?sponsor=1"
}
},
+ "node_modules/meow": {
+ "version": "12.1.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
+ "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -2145,6 +2396,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/nested-error-stacks": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz",
+ "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
diff --git a/build/cjs/package.json b/package.build.cjs.json
similarity index 100%
rename from build/cjs/package.json
rename to package.build.cjs.json
diff --git a/package.build.json b/package.build.json
new file mode 100644
index 0000000..ed1d88e
--- /dev/null
+++ b/package.build.json
@@ -0,0 +1,10 @@
+{
+ "name": "readium-speech",
+ "version": "1.0.0",
+ "description": "Readium Speech is a TypeScript library for implementing a read aloud feature with Web technologies. It follows [best practices](https://github.com/HadrienGardeur/read-aloud-best-practices) gathered through interviews with members of the digital publishing industry.",
+ "main": "cjs/index.js",
+ "module": "mjs/index.js",
+ "types": "types/voices.d.ts",
+ "license": "BSD-3-Clause",
+ "type": "module"
+}
diff --git a/package.build.mjs.json b/package.build.mjs.json
new file mode 100644
index 0000000..4720025
--- /dev/null
+++ b/package.build.mjs.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
diff --git a/package.json b/package.json
index 35da660..117d4b3 100644
--- a/package.json
+++ b/package.json
@@ -5,8 +5,10 @@
"main": "build/cjs/voices.js",
"module": "build/mjs/voices.js",
"scripts": {
- "test": "ava build/mjs/**/*.test.js",
- "build": "rimraf build/* && tsc -p tsconfig-cjs.json && tsc -p tsconfig.json && /bin/sh script/fixup.sh",
+ "test": "tsc -p tsconfig-test.json && ava build/test/test/**/*.test.js",
+ "clean": "rimraf ./build",
+ "types": "tsc -p tsconfig-types.json",
+ "build": "tsc -p tsconfig-cjs.json && tsc -p tsconfig-mjs.json && npm run types && cpy package.build.cjs.json ./build/cjs --rename=package.json && cpy package.build.mjs.json ./build/mjs --rename=package.json && cpy package.build.json ./build --rename=package.json",
"start": "node build/index.js",
"extract-json-data": "node script/extract-json.mjs",
"serve": "http-server ./",
@@ -18,6 +20,7 @@
"devDependencies": {
"@ava/typescript": "^5.0.0",
"ava": "^6.1.3",
+ "cpy-cli": "^5.0.0",
"http-server": "^14.1.1",
"rimraf": "^6.0.1",
"typescript": "^5.5.4"
diff --git a/tsconfig-base.json b/tsconfig-base.json
index 67df891..ec56997 100644
--- a/tsconfig-base.json
+++ b/tsconfig-base.json
@@ -49,7 +49,7 @@
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
/* Emit */
- "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
+ // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
@@ -106,5 +106,5 @@
"skipLibCheck": true /* Skip type checking all .d.ts files. */
},
"exclude": ["node_modules", "dist"],
- "include": ["src", "test"]
+ "include": ["src"]
}
diff --git a/tsconfig.json b/tsconfig-mjs.json
similarity index 100%
rename from tsconfig.json
rename to tsconfig-mjs.json
diff --git a/tsconfig-test.json b/tsconfig-test.json
new file mode 100644
index 0000000..02a5789
--- /dev/null
+++ b/tsconfig-test.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "moduleResolution": "NodeNext",
+ "module": "NodeNext",
+ "outDir": "build/test",
+ "target": "esnext"
+ },
+ "exclude": ["build/", "node_modules/"],
+ "includes": ["test/"]
+}
diff --git a/tsconfig-types.json b/tsconfig-types.json
new file mode 100644
index 0000000..2224ecd
--- /dev/null
+++ b/tsconfig-types.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./tsconfig-base.json",
+ "compilerOptions": {
+ "declaration": true,
+ "moduleResolution": "NodeNext",
+ "module": "NodeNext",
+ "outDir": "build/types",
+ "emitDeclarationOnly": true,
+ "target": "esnext"
+ }
+}