echogarden 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -1
- package/data/lexicons/heteronyms.json +674 -0
- package/data/schemas/options.json +1057 -0
- package/data/tables/lcid-table.json +7427 -0
- package/dist/alignment/DTWMfccSequenceAlignment.d.ts +2 -0
- package/dist/alignment/DTWMfccSequenceAlignment.js +26 -0
- package/dist/alignment/DTWMfccSequenceAlignment.js.map +1 -0
- package/dist/alignment/DTWSequenceAlignment.d.ts +5 -0
- package/dist/alignment/DTWSequenceAlignment.js +99 -0
- package/dist/alignment/DTWSequenceAlignment.js.map +1 -0
- package/dist/alignment/DTWSequenceAlignmentWindowed.d.ts +5 -0
- package/dist/alignment/DTWSequenceAlignmentWindowed.js +161 -0
- package/dist/alignment/DTWSequenceAlignmentWindowed.js.map +1 -0
- package/dist/alignment/LevenshteinSequenceAlignment.d.ts +5 -0
- package/dist/alignment/LevenshteinSequenceAlignment.js +102 -0
- package/dist/alignment/LevenshteinSequenceAlignment.js.map +1 -0
- package/dist/alignment/SpeechAlignment.d.ts +27 -0
- package/dist/alignment/SpeechAlignment.js +266 -0
- package/dist/alignment/SpeechAlignment.js.map +1 -0
- package/dist/api/API.d.ts +8 -0
- package/dist/api/API.js +10 -0
- package/dist/api/API.js.map +1 -0
- package/dist/api/APIOptions.d.ts +12 -0
- package/dist/api/APIOptions.js +2 -0
- package/dist/api/APIOptions.js.map +1 -0
- package/dist/api/Alignment.d.ts +32 -0
- package/dist/api/Alignment.js +134 -0
- package/dist/api/Alignment.js.map +1 -0
- package/dist/api/Denoising.d.ts +14 -0
- package/dist/api/Denoising.js +66 -0
- package/dist/api/Denoising.js.map +1 -0
- package/dist/api/Globals.d.ts +1 -0
- package/dist/api/Globals.js +2 -0
- package/dist/api/Globals.js.map +1 -0
- package/dist/api/LanguageDetection.d.ts +49 -0
- package/dist/api/LanguageDetection.js +118 -0
- package/dist/api/LanguageDetection.js.map +1 -0
- package/dist/api/Recognition.d.ts +49 -0
- package/dist/api/Recognition.js +162 -0
- package/dist/api/Recognition.js.map +1 -0
- package/dist/api/Synthesis.d.ts +125 -0
- package/dist/api/Synthesis.js +892 -0
- package/dist/api/Synthesis.js.map +1 -0
- package/dist/api/Translation.d.ts +25 -0
- package/dist/api/Translation.js +69 -0
- package/dist/api/Translation.js.map +1 -0
- package/dist/api/Vad.d.ts +25 -0
- package/dist/api/Vad.js +88 -0
- package/dist/api/Vad.js.map +1 -0
- package/dist/audio/AudioBufferConversion.d.ts +15 -0
- package/dist/audio/AudioBufferConversion.js +228 -0
- package/dist/audio/AudioBufferConversion.js.map +1 -0
- package/dist/audio/AudioPlayer.d.ts +9 -0
- package/dist/audio/AudioPlayer.js +232 -0
- package/dist/audio/AudioPlayer.js.map +1 -0
- package/dist/audio/AudioRecorder.d.ts +3 -0
- package/dist/audio/AudioRecorder.js +68 -0
- package/dist/audio/AudioRecorder.js.map +1 -0
- package/dist/audio/AudioUtilities.d.ts +48 -0
- package/dist/audio/AudioUtilities.js +209 -0
- package/dist/audio/AudioUtilities.js.map +1 -0
- package/dist/audio/SoxPath.d.ts +1 -0
- package/dist/audio/SoxPath.js +19 -0
- package/dist/audio/SoxPath.js.map +1 -0
- package/dist/cli/CLI.d.ts +8 -0
- package/dist/cli/CLI.js +860 -0
- package/dist/cli/CLI.js.map +1 -0
- package/dist/cli/CLIConfigFile.d.ts +3 -0
- package/dist/cli/CLIConfigFile.js +62 -0
- package/dist/cli/CLIConfigFile.js.map +1 -0
- package/dist/cli/CLILauncher.d.ts +2 -0
- package/dist/cli/CLILauncher.js +22 -0
- package/dist/cli/CLILauncher.js.map +1 -0
- package/dist/cli/CLIOptionsSchema.d.ts +5 -0
- package/dist/cli/CLIOptionsSchema.js +36 -0
- package/dist/cli/CLIOptionsSchema.js.map +1 -0
- package/dist/cli/CLIParser.d.ts +6 -0
- package/dist/cli/CLIParser.js +34 -0
- package/dist/cli/CLIParser.js.map +1 -0
- package/dist/cli/CLIStarter.d.ts +1 -0
- package/dist/cli/CLIStarter.js +3 -0
- package/dist/cli/CLIStarter.js.map +1 -0
- package/dist/codecs/FFMpegTranscoder.d.ts +20 -0
- package/dist/codecs/FFMpegTranscoder.js +169 -0
- package/dist/codecs/FFMpegTranscoder.js.map +1 -0
- package/dist/codecs/TIMITCodec.d.ts +9 -0
- package/dist/codecs/TIMITCodec.js +14 -0
- package/dist/codecs/TIMITCodec.js.map +1 -0
- package/dist/codecs/WaveCodec.d.ts +19 -0
- package/dist/codecs/WaveCodec.js +208 -0
- package/dist/codecs/WaveCodec.js.map +1 -0
- package/dist/denoising/RNNoise.d.ts +6 -0
- package/dist/denoising/RNNoise.js +68 -0
- package/dist/denoising/RNNoise.js.map +1 -0
- package/dist/dsp/BiquadFilter.d.ts +26 -0
- package/dist/dsp/BiquadFilter.js +399 -0
- package/dist/dsp/BiquadFilter.js.map +1 -0
- package/dist/dsp/FFT.d.ts +9 -0
- package/dist/dsp/FFT.js +135 -0
- package/dist/dsp/FFT.js.map +1 -0
- package/dist/dsp/MFCC.d.ts +25 -0
- package/dist/dsp/MFCC.js +162 -0
- package/dist/dsp/MFCC.js.map +1 -0
- package/dist/dsp/MelSpectogram.d.ts +19 -0
- package/dist/dsp/MelSpectogram.js +102 -0
- package/dist/dsp/MelSpectogram.js.map +1 -0
- package/dist/dsp/Rubberband.d.ts +52 -0
- package/dist/dsp/Rubberband.js +186 -0
- package/dist/dsp/Rubberband.js.map +1 -0
- package/dist/dsp/Sonic.d.ts +2 -0
- package/dist/dsp/Sonic.js +39 -0
- package/dist/dsp/Sonic.js.map +1 -0
- package/dist/dsp/SpeexResampler.d.ts +3 -0
- package/dist/dsp/SpeexResampler.js +53 -0
- package/dist/dsp/SpeexResampler.js.map +1 -0
- package/dist/math/VectorMath.d.ts +70 -0
- package/dist/math/VectorMath.js +564 -0
- package/dist/math/VectorMath.js.map +1 -0
- package/dist/nlp/ChineseSegmentation.d.ts +1 -0
- package/dist/nlp/ChineseSegmentation.js +53 -0
- package/dist/nlp/ChineseSegmentation.js.map +1 -0
- package/dist/nlp/CompromiseNLP.d.ts +15 -0
- package/dist/nlp/CompromiseNLP.js +66 -0
- package/dist/nlp/CompromiseNLP.js.map +1 -0
- package/dist/nlp/EspeakPhonemizer.d.ts +4 -0
- package/dist/nlp/EspeakPhonemizer.js +133 -0
- package/dist/nlp/EspeakPhonemizer.js.map +1 -0
- package/dist/nlp/IPA.d.ts +19 -0
- package/dist/nlp/IPA.js +113 -0
- package/dist/nlp/IPA.js.map +1 -0
- package/dist/nlp/JapaneseSegmentation.d.ts +1 -0
- package/dist/nlp/JapaneseSegmentation.js +40 -0
- package/dist/nlp/JapaneseSegmentation.js.map +1 -0
- package/dist/nlp/Lexicon.d.ts +17 -0
- package/dist/nlp/Lexicon.js +6 -0
- package/dist/nlp/Lexicon.js.map +1 -0
- package/dist/nlp/PhoneConversion.d.ts +6 -0
- package/dist/nlp/PhoneConversion.js +467 -0
- package/dist/nlp/PhoneConversion.js.map +1 -0
- package/dist/nlp/Segmentation.d.ts +41 -0
- package/dist/nlp/Segmentation.js +158 -0
- package/dist/nlp/Segmentation.js.map +1 -0
- package/dist/nlp/TextNormalizer.d.ts +4 -0
- package/dist/nlp/TextNormalizer.js +69 -0
- package/dist/nlp/TextNormalizer.js.map +1 -0
- package/dist/recognition/AmazonTranscribeSTT.d.ts +6 -0
- package/dist/recognition/AmazonTranscribeSTT.js +79 -0
- package/dist/recognition/AmazonTranscribeSTT.js.map +1 -0
- package/dist/recognition/AzureCognitiveServicesSTT.d.ts +7 -0
- package/dist/recognition/AzureCognitiveServicesSTT.js +51 -0
- package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -0
- package/dist/recognition/GoogleCloudSTT.d.ts +7 -0
- package/dist/recognition/GoogleCloudSTT.js +66 -0
- package/dist/recognition/GoogleCloudSTT.js.map +1 -0
- package/dist/recognition/SileroSTT.d.ts +9 -0
- package/dist/recognition/SileroSTT.js +125 -0
- package/dist/recognition/SileroSTT.js.map +1 -0
- package/dist/recognition/VoskSTT.d.ts +10 -0
- package/dist/recognition/VoskSTT.js +78 -0
- package/dist/recognition/VoskSTT.js.map +1 -0
- package/dist/recognition/WhisperSTT.d.ts +69 -0
- package/dist/recognition/WhisperSTT.js +977 -0
- package/dist/recognition/WhisperSTT.js.map +1 -0
- package/dist/server/Server.d.ts +1 -0
- package/dist/server/Server.js +18 -0
- package/dist/server/Server.js.map +1 -0
- package/dist/speech-language-detection/SileroLanguageDetection.d.ts +9 -0
- package/dist/speech-language-detection/SileroLanguageDetection.js +47 -0
- package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -0
- package/dist/subtitles/Subtitles.d.ts +25 -0
- package/dist/subtitles/Subtitles.js +286 -0
- package/dist/subtitles/Subtitles.js.map +1 -0
- package/dist/synthesis/AwsPollyTTS.d.ts +7 -0
- package/dist/synthesis/AwsPollyTTS.js +51 -0
- package/dist/synthesis/AwsPollyTTS.js.map +1 -0
- package/dist/synthesis/AzureCognitiveServicesTTS.d.ts +9 -0
- package/dist/synthesis/AzureCognitiveServicesTTS.js +103 -0
- package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -0
- package/dist/synthesis/CoquiServerTTS.d.ts +6 -0
- package/dist/synthesis/CoquiServerTTS.js +22 -0
- package/dist/synthesis/CoquiServerTTS.js.map +1 -0
- package/dist/synthesis/ElevenLabsTTS.d.ts +8 -0
- package/dist/synthesis/ElevenLabsTTS.js +48 -0
- package/dist/synthesis/ElevenLabsTTS.js.map +1 -0
- package/dist/synthesis/EspeakTTS.d.ts +46 -0
- package/dist/synthesis/EspeakTTS.js +353 -0
- package/dist/synthesis/EspeakTTS.js.map +1 -0
- package/dist/synthesis/FliteTTS.d.ts +17 -0
- package/dist/synthesis/FliteTTS.js +326 -0
- package/dist/synthesis/FliteTTS.js.map +1 -0
- package/dist/synthesis/GoogleCloudTTS.d.ts +17 -0
- package/dist/synthesis/GoogleCloudTTS.js +72 -0
- package/dist/synthesis/GoogleCloudTTS.js.map +1 -0
- package/dist/synthesis/GoogleTranslateTTS.d.ts +13 -0
- package/dist/synthesis/GoogleTranslateTTS.js +177 -0
- package/dist/synthesis/GoogleTranslateTTS.js.map +1 -0
- package/dist/synthesis/MicrosoftEdgeTTS.d.ts +10 -0
- package/dist/synthesis/MicrosoftEdgeTTS.js +216 -0
- package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -0
- package/dist/synthesis/SamTTS.d.ts +4 -0
- package/dist/synthesis/SamTTS.js +21 -0
- package/dist/synthesis/SamTTS.js.map +1 -0
- package/dist/synthesis/SapiTTS.d.ts +9 -0
- package/dist/synthesis/SapiTTS.js +211 -0
- package/dist/synthesis/SapiTTS.js.map +1 -0
- package/dist/synthesis/StreamlabsPollyTTS.d.ts +12 -0
- package/dist/synthesis/StreamlabsPollyTTS.js +88 -0
- package/dist/synthesis/StreamlabsPollyTTS.js.map +1 -0
- package/dist/synthesis/SvoxPicoTTS.d.ts +11 -0
- package/dist/synthesis/SvoxPicoTTS.js +236 -0
- package/dist/synthesis/SvoxPicoTTS.js.map +1 -0
- package/dist/synthesis/VitsTTS.d.ts +27 -0
- package/dist/synthesis/VitsTTS.js +359 -0
- package/dist/synthesis/VitsTTS.js.map +1 -0
- package/dist/tests/Test.d.ts +1 -0
- package/dist/tests/Test.js +10 -0
- package/dist/tests/Test.js.map +1 -0
- package/dist/text-language-detection/FastTextLanguageDetection.d.ts +2 -0
- package/dist/text-language-detection/FastTextLanguageDetection.js +38 -0
- package/dist/text-language-detection/FastTextLanguageDetection.js.map +1 -0
- package/dist/text-language-detection/TinyLDLanguageDetection.d.ts +2 -0
- package/dist/text-language-detection/TinyLDLanguageDetection.js +12 -0
- package/dist/text-language-detection/TinyLDLanguageDetection.js.map +1 -0
- package/dist/utilities/BinaryArrayConversion.d.ts +15 -0
- package/dist/utilities/BinaryArrayConversion.js +115 -0
- package/dist/utilities/BinaryArrayConversion.js.map +1 -0
- package/dist/utilities/Compression.d.ts +4 -0
- package/dist/utilities/Compression.js +67 -0
- package/dist/utilities/Compression.js.map +1 -0
- package/dist/utilities/FileDownloader.d.ts +3 -0
- package/dist/utilities/FileDownloader.js +147 -0
- package/dist/utilities/FileDownloader.js.map +1 -0
- package/dist/utilities/FileSystem.d.ts +30 -0
- package/dist/utilities/FileSystem.js +141 -0
- package/dist/utilities/FileSystem.js.map +1 -0
- package/dist/utilities/Hashing.d.ts +10 -0
- package/dist/utilities/Hashing.js +169 -0
- package/dist/utilities/Hashing.js.map +1 -0
- package/dist/utilities/Locale.d.ts +9 -0
- package/dist/utilities/Locale.js +65 -0
- package/dist/utilities/Locale.js.map +1 -0
- package/dist/utilities/Logger.d.ts +11 -0
- package/dist/utilities/Logger.js +49 -0
- package/dist/utilities/Logger.js.map +1 -0
- package/dist/utilities/NdArrayUtilities.d.ts +3 -0
- package/dist/utilities/NdArrayUtilities.js +22 -0
- package/dist/utilities/NdArrayUtilities.js.map +1 -0
- package/dist/utilities/ObjectUtilities.d.ts +4 -0
- package/dist/utilities/ObjectUtilities.js +132 -0
- package/dist/utilities/ObjectUtilities.js.map +1 -0
- package/dist/utilities/OpenPromise.d.ts +6 -0
- package/dist/utilities/OpenPromise.js +12 -0
- package/dist/utilities/OpenPromise.js.map +1 -0
- package/dist/utilities/PackageManager.d.ts +4 -0
- package/dist/utilities/PackageManager.js +46 -0
- package/dist/utilities/PackageManager.js.map +1 -0
- package/dist/utilities/RandomGenerator.d.ts +35 -0
- package/dist/utilities/RandomGenerator.js +149 -0
- package/dist/utilities/RandomGenerator.js.map +1 -0
- package/dist/utilities/TarballMaker.d.ts +4 -0
- package/dist/utilities/TarballMaker.js +50 -0
- package/dist/utilities/TarballMaker.js.map +1 -0
- package/dist/utilities/Timeline.d.ts +20 -0
- package/dist/utilities/Timeline.js +110 -0
- package/dist/utilities/Timeline.js.map +1 -0
- package/dist/utilities/Timer.d.ts +13 -0
- package/dist/utilities/Timer.js +70 -0
- package/dist/utilities/Timer.js.map +1 -0
- package/dist/utilities/Utilities.d.ts +68 -0
- package/dist/utilities/Utilities.js +305 -0
- package/dist/utilities/Utilities.js.map +1 -0
- package/dist/utilities/WasmMemoryManager.d.ts +142 -0
- package/dist/utilities/WasmMemoryManager.js +407 -0
- package/dist/utilities/WasmMemoryManager.js.map +1 -0
- package/dist/utilities/WebReader.d.ts +1 -0
- package/dist/utilities/WebReader.js +47 -0
- package/dist/utilities/WebReader.js.map +1 -0
- package/dist/utilities/WikipediaReader.d.ts +1 -0
- package/dist/utilities/WikipediaReader.js +31 -0
- package/dist/utilities/WikipediaReader.js.map +1 -0
- package/dist/voice-activity-detection/SileroVAD.d.ts +13 -0
- package/dist/voice-activity-detection/SileroVAD.js +58 -0
- package/dist/voice-activity-detection/SileroVAD.js.map +1 -0
- package/dist/voice-activity-detection/WebRtcVAD.d.ts +3 -0
- package/dist/voice-activity-detection/WebRtcVAD.js +53 -0
- package/dist/voice-activity-detection/WebRtcVAD.js.map +1 -0
- package/docs/CLI.md +234 -0
- package/docs/Development.md +3 -0
- package/docs/Engines.md +80 -0
- package/docs/Licenses.md +37 -0
- package/docs/Options.md +192 -0
- package/docs/Roadmap.md +16 -0
- package/docs/Technical.md +72 -0
- package/package.json +119 -19
- package/cli.js +0 -3
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { WASI } from 'wasi';
|
|
2
|
+
import { decodeWaveBuffer } from "../audio/AudioUtilities.js";
|
|
3
|
+
import { Logger } from "../utilities/Logger.js";
|
|
4
|
+
import { getRandomHexString, logToStderr, resolveModuleMainPath } from "../utilities/Utilities.js";
|
|
5
|
+
import { getAppTempDir, readFile, open, close, remove, ensureDir } from "../utilities/FileSystem.js";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
const log = logToStderr;
|
|
8
|
+
let fliteModuleObject;
|
|
9
|
+
export async function synthesize(text, voice, voiceDir, rate, pitchMeanHz, pitchStdDev) {
|
|
10
|
+
const logger = new Logger();
|
|
11
|
+
logger.start("Get Flite WASI instance");
|
|
12
|
+
const randomId = getRandomHexString(16);
|
|
13
|
+
const outFileName = `${randomId}.out.wav`;
|
|
14
|
+
const stdOutFileName = `${randomId}.stdout`;
|
|
15
|
+
const tempDir = getAppTempDir("flite");
|
|
16
|
+
await ensureDir(tempDir);
|
|
17
|
+
const tempAudioFilePath = path.join(tempDir, outFileName);
|
|
18
|
+
const tempStdOutFilePath = path.join(tempDir, stdOutFileName);
|
|
19
|
+
const stdOutFileFd = await open(tempStdOutFilePath, "w+");
|
|
20
|
+
if (voiceDir) {
|
|
21
|
+
voice = `voices/${voice}.flitevox`;
|
|
22
|
+
}
|
|
23
|
+
const optionArgs = [
|
|
24
|
+
'-voice', voice,
|
|
25
|
+
'--setf', `duration_stretch=${1.0 / rate}`,
|
|
26
|
+
];
|
|
27
|
+
if (pitchMeanHz != null) {
|
|
28
|
+
optionArgs.push('--setf', `int_f0_target_mean=${pitchMeanHz}`);
|
|
29
|
+
}
|
|
30
|
+
if (pitchStdDev != null) {
|
|
31
|
+
optionArgs.push('--setf', `int_f0_target_stddev=${pitchStdDev}`);
|
|
32
|
+
}
|
|
33
|
+
const preopens = {
|
|
34
|
+
'.': tempDir,
|
|
35
|
+
};
|
|
36
|
+
if (voiceDir != undefined) {
|
|
37
|
+
preopens['./voices'] = voiceDir;
|
|
38
|
+
}
|
|
39
|
+
const wasi = new WASI({
|
|
40
|
+
env: {},
|
|
41
|
+
args: ['--',
|
|
42
|
+
//'-ssml',
|
|
43
|
+
'-psdur',
|
|
44
|
+
...optionArgs,
|
|
45
|
+
//escape(text),
|
|
46
|
+
text,
|
|
47
|
+
outFileName
|
|
48
|
+
],
|
|
49
|
+
preopens,
|
|
50
|
+
stdout: stdOutFileFd,
|
|
51
|
+
returnOnExit: true
|
|
52
|
+
});
|
|
53
|
+
// Some WASI binaries require `const importObject = { wasi_unstable: wasi.wasiImport }`
|
|
54
|
+
const importObject = { wasi_snapshot_preview1: wasi.wasiImport };
|
|
55
|
+
const moduleObject = await getModuleObject();
|
|
56
|
+
const instance = await WebAssembly.instantiate(moduleObject, importObject);
|
|
57
|
+
logger.start("Synthesize with flite");
|
|
58
|
+
const exitCode = wasi.start(instance);
|
|
59
|
+
await close(stdOutFileFd);
|
|
60
|
+
async function cleanup() {
|
|
61
|
+
await remove(tempAudioFilePath);
|
|
62
|
+
await remove(tempStdOutFilePath);
|
|
63
|
+
}
|
|
64
|
+
if (exitCode != 0) {
|
|
65
|
+
await cleanup();
|
|
66
|
+
throw new Error(`Flite failed with exit code ${exitCode}`);
|
|
67
|
+
}
|
|
68
|
+
const waveData = await readFile(tempAudioFilePath);
|
|
69
|
+
const stdOutString = await readFile(tempStdOutFilePath, "utf8");
|
|
70
|
+
await cleanup();
|
|
71
|
+
const events = parseEventsFromTrace(stdOutString);
|
|
72
|
+
const { rawAudio } = decodeWaveBuffer(waveData);
|
|
73
|
+
logger.end();
|
|
74
|
+
return { rawAudio, events };
|
|
75
|
+
}
|
|
76
|
+
async function getModuleObject() {
|
|
77
|
+
if (!fliteModuleObject) {
|
|
78
|
+
const fliteWasiPath = await resolveModuleMainPath('@echogarden/flite-wasi');
|
|
79
|
+
fliteModuleObject = await WebAssembly.compile(await readFile(fliteWasiPath));
|
|
80
|
+
}
|
|
81
|
+
return fliteModuleObject;
|
|
82
|
+
}
|
|
83
|
+
function parseEventsFromTrace(eventTrace) {
|
|
84
|
+
//log(eventTrace)
|
|
85
|
+
const eventStrings = eventTrace.trim().split(" ");
|
|
86
|
+
const eventCount = eventStrings.length;
|
|
87
|
+
const events = [];
|
|
88
|
+
let phraseStartOffset = 0;
|
|
89
|
+
for (let i = 0; i < eventCount; i++) {
|
|
90
|
+
const eventString = eventStrings[i];
|
|
91
|
+
const splitPoint = eventString.lastIndexOf(":");
|
|
92
|
+
const id = eventString.substring(0, splitPoint);
|
|
93
|
+
const startTime = events.length > 0 ? events[events.length - 1].endTime : 0;
|
|
94
|
+
let eventType;
|
|
95
|
+
if (id == "pau") {
|
|
96
|
+
eventType = "pause";
|
|
97
|
+
}
|
|
98
|
+
else if (id == "\npau") {
|
|
99
|
+
eventType = "phrasePause";
|
|
100
|
+
phraseStartOffset = startTime;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
eventType = "phone";
|
|
104
|
+
}
|
|
105
|
+
const endTime = phraseStartOffset + parseFloat(eventString.substring(splitPoint + 1));
|
|
106
|
+
events.push({
|
|
107
|
+
type: eventType,
|
|
108
|
+
id,
|
|
109
|
+
startTime,
|
|
110
|
+
endTime
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return events;
|
|
114
|
+
}
|
|
115
|
+
export const voices = [
|
|
116
|
+
// Built-in voices
|
|
117
|
+
{
|
|
118
|
+
name: "slt",
|
|
119
|
+
languages: ["en-US", "en"],
|
|
120
|
+
gender: "female"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "kal16",
|
|
124
|
+
languages: ["en-US", "en"],
|
|
125
|
+
gender: "male"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: "rms",
|
|
129
|
+
languages: ["en-US", "en"],
|
|
130
|
+
gender: "male"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "awb",
|
|
134
|
+
languages: ["en-GB-SCOTLAND", "en-GB", "en"],
|
|
135
|
+
gender: "male"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "kal",
|
|
139
|
+
languages: ["en-US", "en"],
|
|
140
|
+
gender: "male"
|
|
141
|
+
},
|
|
142
|
+
// Voices loaded from packages
|
|
143
|
+
// US English voices
|
|
144
|
+
{
|
|
145
|
+
name: "cmu_us_aew",
|
|
146
|
+
languages: ["en-US", "en"],
|
|
147
|
+
gender: "male",
|
|
148
|
+
packageName: "flite-cmu_us_aew"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
name: "cmu_us_ahw",
|
|
152
|
+
languages: ["en-US", "en"],
|
|
153
|
+
gender: "male",
|
|
154
|
+
packageName: "flite-cmu_us_ahw"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: "cmu_us_aup",
|
|
158
|
+
languages: ["en-US", "en"],
|
|
159
|
+
gender: "male",
|
|
160
|
+
packageName: "flite-cmu_us_aup"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "cmu_us_awb",
|
|
164
|
+
languages: ["en-US", "en"],
|
|
165
|
+
gender: "male",
|
|
166
|
+
packageName: "flite-cmu_us_awb"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: "cmu_us_axb",
|
|
170
|
+
languages: ["en-US", "en"],
|
|
171
|
+
gender: "female",
|
|
172
|
+
packageName: "flite-cmu_us_axb"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: "cmu_us_bdl",
|
|
176
|
+
languages: ["en-US", "en"],
|
|
177
|
+
gender: "male",
|
|
178
|
+
packageName: "flite-cmu_us_bdl"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: "cmu_us_clb",
|
|
182
|
+
languages: ["en-US", "en"],
|
|
183
|
+
gender: "female",
|
|
184
|
+
packageName: "flite-cmu_us_clb"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: "cmu_us_eey",
|
|
188
|
+
languages: ["en-US", "en"],
|
|
189
|
+
gender: "female",
|
|
190
|
+
packageName: "flite-cmu_us_eey"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: "cmu_us_fem",
|
|
194
|
+
languages: ["en-US", "en"],
|
|
195
|
+
gender: "male",
|
|
196
|
+
packageName: "flite-cmu_us_fem"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: "cmu_us_gka",
|
|
200
|
+
languages: ["en-US", "en"],
|
|
201
|
+
gender: "male",
|
|
202
|
+
packageName: "flite-cmu_us_gka"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
name: "cmu_us_jmk",
|
|
206
|
+
languages: ["en-US", "en"],
|
|
207
|
+
gender: "male",
|
|
208
|
+
packageName: "flite-cmu_us_jmk"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: "cmu_us_ksp",
|
|
212
|
+
languages: ["en-US", "en"],
|
|
213
|
+
gender: "male",
|
|
214
|
+
packageName: "flite-cmu_us_ksp"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: "cmu_us_ljm",
|
|
218
|
+
languages: ["en-US", "en"],
|
|
219
|
+
gender: "female",
|
|
220
|
+
packageName: "flite-cmu_us_ljm"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
name: "cmu_us_lnh",
|
|
224
|
+
languages: ["en-US", "en"],
|
|
225
|
+
gender: "female",
|
|
226
|
+
packageName: "flite-cmu_us_lnh"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
name: "cmu_us_rms",
|
|
230
|
+
languages: ["en-US", "en"],
|
|
231
|
+
gender: "male",
|
|
232
|
+
packageName: "flite-cmu_us_rms"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: "cmu_us_rxr",
|
|
236
|
+
languages: ["en-US", "en"],
|
|
237
|
+
gender: "male",
|
|
238
|
+
packageName: "flite-cmu_us_rxr"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: "cmu_us_slp",
|
|
242
|
+
languages: ["en-US", "en"],
|
|
243
|
+
gender: "female",
|
|
244
|
+
packageName: "flite-cmu_us_slp"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
name: "cmu_us_slt",
|
|
248
|
+
languages: ["en-US", "en"],
|
|
249
|
+
gender: "female",
|
|
250
|
+
packageName: "flite-cmu_us_slt"
|
|
251
|
+
},
|
|
252
|
+
// Indic voices
|
|
253
|
+
{
|
|
254
|
+
name: "cmu_indic_ben_rm",
|
|
255
|
+
languages: ["be", "bn"],
|
|
256
|
+
gender: "female",
|
|
257
|
+
packageName: "flite-cmu_indic_ben_rm"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
name: "cmu_indic_guj_ad",
|
|
261
|
+
languages: ["gu"],
|
|
262
|
+
gender: "male",
|
|
263
|
+
packageName: "flite-cmu_indic_guj_ad"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
name: "cmu_indic_guj_dp",
|
|
267
|
+
languages: ["gu"],
|
|
268
|
+
gender: "female",
|
|
269
|
+
packageName: "flite-cmu_indic_guj_dp"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: "cmu_indic_guj_kt",
|
|
273
|
+
languages: ["gu"],
|
|
274
|
+
gender: "female",
|
|
275
|
+
packageName: "flite-cmu_indic_guj_kt"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
name: "cmu_indic_hin_ab",
|
|
279
|
+
languages: ["hi"],
|
|
280
|
+
gender: "female",
|
|
281
|
+
packageName: "flite-cmu_indic_hin_ab"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
name: "cmu_indic_kan_plv",
|
|
285
|
+
languages: ["ka"],
|
|
286
|
+
gender: "female",
|
|
287
|
+
packageName: "flite-cmu_indic_kan_plv"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: "cmu_indic_mar_aup",
|
|
291
|
+
languages: ["mr"],
|
|
292
|
+
gender: "male",
|
|
293
|
+
packageName: "flite-cmu_indic_mar_aup"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
name: "cmu_indic_mar_slp",
|
|
297
|
+
languages: ["mr"],
|
|
298
|
+
gender: "female",
|
|
299
|
+
packageName: "flite-cmu_indic_mar_slp"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
name: "cmu_indic_pan_amp",
|
|
303
|
+
languages: ["pa"],
|
|
304
|
+
gender: "female",
|
|
305
|
+
packageName: "flite-cmu_indic_pan_amp"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
name: "cmu_indic_tel_kpn",
|
|
309
|
+
languages: ["te"],
|
|
310
|
+
gender: "female",
|
|
311
|
+
packageName: "flite-cmu_indic_tel_kpn"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
name: "cmu_indic_tel_sk",
|
|
315
|
+
languages: ["te"],
|
|
316
|
+
gender: "male",
|
|
317
|
+
packageName: "flite-cmu_indic_tel_sk"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
name: "cmu_indic_tel_ss",
|
|
321
|
+
languages: ["te"],
|
|
322
|
+
gender: "female",
|
|
323
|
+
packageName: "flite-cmu_indic_tel_ss"
|
|
324
|
+
},
|
|
325
|
+
];
|
|
326
|
+
//# sourceMappingURL=FliteTTS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FliteTTS.js","sourceRoot":"","sources":["../../src/synthesis/FliteTTS.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
export declare function synthesize(text: string, apiKey: string, languageCode?: string, voice?: string, speakingRate?: number, pitchDeltaSemitones?: number, volumeGainDb?: number, ssml?: boolean, audioEncoding?: AudioEncoding, sampleRate?: number): Promise<{
|
|
3
|
+
audioData: Buffer;
|
|
4
|
+
timepoints: timePoint[];
|
|
5
|
+
}>;
|
|
6
|
+
export declare function getVoiceList(apiKey: string): Promise<GoogleCloudVoice[]>;
|
|
7
|
+
export type GoogleCloudVoice = {
|
|
8
|
+
name: string;
|
|
9
|
+
languageCodes: string[];
|
|
10
|
+
ssmlGender: "MALE" | "FEMALE";
|
|
11
|
+
naturalSampleRateHertz: number;
|
|
12
|
+
};
|
|
13
|
+
export type AudioEncoding = "LINEAR16" | "MP3" | "MP3_64_KBPS" | "OGG_OPUS" | "MULAW" | "ALAW";
|
|
14
|
+
export type timePoint = {
|
|
15
|
+
markName: string;
|
|
16
|
+
timeSeconds: number;
|
|
17
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { request } from "gaxios";
|
|
2
|
+
import { Logger } from "../utilities/Logger.js";
|
|
3
|
+
import { logToStderr } from "../utilities/Utilities.js";
|
|
4
|
+
const log = logToStderr;
|
|
5
|
+
export async function synthesize(text, apiKey, languageCode = "en-US", voice = "en-US-Wavenet-C", speakingRate = 1.0, pitchDeltaSemitones = 0.0, volumeGainDb = 0.0, ssml = false, audioEncoding = "MP3_64_KBPS", sampleRate = 24000) {
|
|
6
|
+
const logger = new Logger();
|
|
7
|
+
logger.start("Request synthesis from Google Cloud");
|
|
8
|
+
const requestBody = {
|
|
9
|
+
input: {
|
|
10
|
+
text: undefined,
|
|
11
|
+
ssml: undefined
|
|
12
|
+
},
|
|
13
|
+
voice: {
|
|
14
|
+
languageCode,
|
|
15
|
+
name: voice
|
|
16
|
+
},
|
|
17
|
+
audioConfig: {
|
|
18
|
+
audioEncoding,
|
|
19
|
+
speakingRate,
|
|
20
|
+
pitch: pitchDeltaSemitones,
|
|
21
|
+
volumeGainDb,
|
|
22
|
+
sampleRateHertz: sampleRate
|
|
23
|
+
},
|
|
24
|
+
enableTimePointing: ["SSML_MARK"]
|
|
25
|
+
};
|
|
26
|
+
if (ssml) {
|
|
27
|
+
requestBody.input.ssml = text;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
requestBody.input.text = text;
|
|
31
|
+
}
|
|
32
|
+
const response = await request({
|
|
33
|
+
method: "POST",
|
|
34
|
+
url: `https://texttospeech.googleapis.com/v1beta1/text:synthesize`,
|
|
35
|
+
params: {
|
|
36
|
+
"key": apiKey
|
|
37
|
+
},
|
|
38
|
+
headers: {
|
|
39
|
+
"User-Agent": ""
|
|
40
|
+
},
|
|
41
|
+
data: requestBody,
|
|
42
|
+
responseType: "json"
|
|
43
|
+
});
|
|
44
|
+
logger.start("Parse result");
|
|
45
|
+
const result = parseResponseBody(response.data);
|
|
46
|
+
logger.end();
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
function parseResponseBody(responseBody) {
|
|
50
|
+
const audioData = Buffer.from(responseBody.audioContent, "base64");
|
|
51
|
+
const timepoints = responseBody.timepoints;
|
|
52
|
+
return { audioData, timepoints };
|
|
53
|
+
}
|
|
54
|
+
// Voices with audio samples: https://cloud.google.com/text-to-speech/docs/voices
|
|
55
|
+
export async function getVoiceList(apiKey) {
|
|
56
|
+
const requestURL = `https://texttospeech.googleapis.com/v1beta1/voices`;
|
|
57
|
+
const response = await request({
|
|
58
|
+
method: "GET",
|
|
59
|
+
url: requestURL,
|
|
60
|
+
params: {
|
|
61
|
+
"key": apiKey
|
|
62
|
+
},
|
|
63
|
+
headers: {
|
|
64
|
+
"User-Agent": ""
|
|
65
|
+
},
|
|
66
|
+
responseType: "json"
|
|
67
|
+
});
|
|
68
|
+
const responseData = response.data;
|
|
69
|
+
const voices = responseData.voices;
|
|
70
|
+
return voices;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=GoogleCloudTTS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoogleCloudTTS.js","sourceRoot":"","sources":["../../src/synthesis/GoogleCloudTTS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,MAAM,GAAG,GAAG,WAAW,CAAA;AAEvB,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,MAAc,EAAE,YAAY,GAAG,OAAO,EAAE,KAAK,GAAG,iBAAiB,EAAE,YAAY,GAAG,GAAG,EAAE,mBAAmB,GAAG,GAAG,EAAE,YAAY,GAAG,GAAG,EAAE,IAAI,GAAG,KAAK,EAAE,gBAA+B,aAAa,EAAE,UAAU,GAAG,KAAK;IAClQ,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;IAC3B,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;IAEnD,MAAM,WAAW,GAAG;QACnB,KAAK,EAAE;YACN,IAAI,EAAE,SAAiC;YACvC,IAAI,EAAE,SAAiC;SACvC;QAED,KAAK,EAAE;YACN,YAAY;YACZ,IAAI,EAAE,KAAK;SACX;QAED,WAAW,EAAE;YACZ,aAAa;YACb,YAAY;YACZ,KAAK,EAAE,mBAAmB;YAC1B,YAAY;YACZ,eAAe,EAAE,UAAU;SAC3B;QAED,kBAAkB,EAAE,CAAC,WAAW,CAAC;KACjC,CAAA;IAED,IAAI,IAAI,EAAE;QACT,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;KAC7B;SAAM;QACN,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;KAC7B;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAM;QACnC,MAAM,EAAE,MAAM;QAEd,GAAG,EAAE,6DAA6D;QAElE,MAAM,EAAE;YACP,KAAK,EAAE,MAAM;SACb;QAED,OAAO,EAAE;YACR,YAAY,EAAE,EAAE;SAChB;QAED,IAAI,EAAE,WAAW;QAEjB,YAAY,EAAE,MAAM;KACpB,CAAC,CAAA;IAEF,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAE5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE/C,MAAM,CAAC,GAAG,EAAE,CAAA;IAEZ,OAAO,MAAM,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAiB;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAClE,MAAM,UAAU,GAAgB,YAAY,CAAC,UAAU,CAAA;IAEvD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AACjC,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAChD,MAAM,UAAU,GAAG,oDAAoD,CAAA;IAEvE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAM;QACnC,MAAM,EAAE,KAAK;QAEb,GAAG,EAAE,UAAU;QAEf,MAAM,EAAE;YACP,KAAK,EAAE,MAAM;SACb;QAED,OAAO,EAAE;YACR,YAAY,EAAE,EAAE;SAChB;QAED,YAAY,EAAE,MAAM;KACpB,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAA;IAElC,MAAM,MAAM,GAAuB,YAAY,CAAC,MAAM,CAAA;IAEtD,OAAO,MAAM,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Timeline } from "../utilities/Timeline.js";
|
|
3
|
+
export declare function synthesizeLongText(text: string, languageCode?: string, tld?: string, sentenceEndPause?: number, segmentEndPause?: number): Promise<{
|
|
4
|
+
rawAudio: {
|
|
5
|
+
audioChannels: Float32Array[];
|
|
6
|
+
sampleRate: number;
|
|
7
|
+
};
|
|
8
|
+
timeline: Timeline;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function synthesizeShortText(text: string, languageCode?: string, tld?: string): Promise<Buffer>;
|
|
11
|
+
export declare const supportedLanguageLookup: {
|
|
12
|
+
[langCode: string]: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { request } from "gaxios";
|
|
2
|
+
import { Phrase, splitToFragments } from "../nlp/Segmentation.js";
|
|
3
|
+
import { concatFloat32Arrays, logToStderr } from "../utilities/Utilities.js";
|
|
4
|
+
import * as FFMpegTranscoder from "../codecs/FFMpegTranscoder.js";
|
|
5
|
+
import { trimAudioEnd } from "../audio/AudioUtilities.js";
|
|
6
|
+
import { Logger } from "../utilities/Logger.js";
|
|
7
|
+
import { getShortLanguageCode } from "../utilities/Locale.js";
|
|
8
|
+
const log = logToStderr;
|
|
9
|
+
const maxTextLengthPerRequest = 200;
|
|
10
|
+
export async function synthesizeLongText(text, languageCode = "en", tld = "us", sentenceEndPause = 0.75, segmentEndPause = 1.0) {
|
|
11
|
+
if (text.length == 0) {
|
|
12
|
+
throw new Error("Text is empty");
|
|
13
|
+
}
|
|
14
|
+
const logger = new Logger();
|
|
15
|
+
logger.start("Prepare and split text");
|
|
16
|
+
const fragments = await splitToFragments(text, maxTextLengthPerRequest, languageCode);
|
|
17
|
+
const audioFragments = [];
|
|
18
|
+
let fragmentsSampleRate = 0;
|
|
19
|
+
const timeline = [];
|
|
20
|
+
for (let i = 0; i < fragments.length; i++) {
|
|
21
|
+
const fragment = fragments[i];
|
|
22
|
+
logger.start(`Request synthesis for text fragment ${i + 1}/${fragments.length} from Google Translate`);
|
|
23
|
+
const fragmentMp3Stream = await synthesizeShortText(fragment.text, languageCode, tld);
|
|
24
|
+
if (fragmentMp3Stream.length == 0) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const rawAudio = await FFMpegTranscoder.decodeToChannels(fragmentMp3Stream, 24000, 1);
|
|
28
|
+
fragmentsSampleRate = rawAudio.sampleRate;
|
|
29
|
+
let targetEndingSilenceTime;
|
|
30
|
+
if (fragment.lastSegment?.isSentenceFinalizer) {
|
|
31
|
+
targetEndingSilenceTime = 0.75;
|
|
32
|
+
}
|
|
33
|
+
else if (fragment.lastSegment instanceof Phrase) {
|
|
34
|
+
targetEndingSilenceTime = 0.1;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
targetEndingSilenceTime = 0;
|
|
38
|
+
}
|
|
39
|
+
const trimmedAudio = trimAudioEnd(rawAudio.audioChannels[0], targetEndingSilenceTime * rawAudio.sampleRate);
|
|
40
|
+
audioFragments.push(trimmedAudio);
|
|
41
|
+
const startTime = timeline.length == 0 ? 0 : timeline[timeline.length - 1].endTime;
|
|
42
|
+
const endTime = startTime + (trimmedAudio.length / fragmentsSampleRate);
|
|
43
|
+
timeline.push({
|
|
44
|
+
type: "segment",
|
|
45
|
+
text: fragment.text,
|
|
46
|
+
startTime,
|
|
47
|
+
endTime
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
logger.end();
|
|
51
|
+
const rawAudio = { audioChannels: [concatFloat32Arrays(audioFragments)], sampleRate: fragmentsSampleRate };
|
|
52
|
+
return {
|
|
53
|
+
rawAudio,
|
|
54
|
+
timeline
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export async function synthesizeShortText(text, languageCode = "en", tld = "us") {
|
|
58
|
+
if (text.length > maxTextLengthPerRequest) {
|
|
59
|
+
throw new Error(`Text is ${text.length} characters, which is longer than the maximum of ${maxTextLengthPerRequest}`);
|
|
60
|
+
}
|
|
61
|
+
if (languageCode != "zh-CN" && languageCode != "zh-TW") {
|
|
62
|
+
languageCode = getShortLanguageCode(languageCode);
|
|
63
|
+
}
|
|
64
|
+
const bodyFormParameters = [text, languageCode, null, "null"];
|
|
65
|
+
const requestForm = [[["jQ1olc", JSON.stringify(bodyFormParameters), null, "generic"]]];
|
|
66
|
+
const stringifiedForm = JSON.stringify(requestForm);
|
|
67
|
+
const requestBody = `f.req=${encodeURIComponent(stringifiedForm)}&`;
|
|
68
|
+
const response = await request({
|
|
69
|
+
method: "POST",
|
|
70
|
+
url: `https://translate.google.${tld}/_/TranslateWebserverUi/data/batchexecute`,
|
|
71
|
+
params: {
|
|
72
|
+
"rpcids": "jQ1olc"
|
|
73
|
+
},
|
|
74
|
+
headers: {
|
|
75
|
+
"sec-ch-ua": `".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"`,
|
|
76
|
+
"x-same-domain": "1",
|
|
77
|
+
"dnt": "1",
|
|
78
|
+
"content-type": "application/x-www-form-urlencoded;charset=UTF-8",
|
|
79
|
+
"sec-ch-ua-mobile": "?0",
|
|
80
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
|
|
81
|
+
"sec-ch-ua-arch": "x86",
|
|
82
|
+
"sec-ch-ua-full-version": "103.0.5060.114",
|
|
83
|
+
"sec-ch-ua-platform-version": "10.0.0",
|
|
84
|
+
"sec-ch-ua-full-version-list": `".Not/A)Brand";v="99.0.0.0", "Google Chrome";v="103.0.5060.114", "Chromium";v="103.0.5060.114"`,
|
|
85
|
+
"sec-ch-ua-bitness": "64",
|
|
86
|
+
"sec-ch-ua-model": "",
|
|
87
|
+
"sec-ch-ua-platform": "Windows",
|
|
88
|
+
"accept": "*/*",
|
|
89
|
+
"origin": "https://translate.google.com",
|
|
90
|
+
"sec-fetch-site": "same-origin",
|
|
91
|
+
"sec-fetch-mode": "cors",
|
|
92
|
+
"sec-fetch-dest": "empty",
|
|
93
|
+
"referer": "https://translate.google.com/",
|
|
94
|
+
"accept-encoding": "gzip, deflate, br",
|
|
95
|
+
"accept-language": "en-US,en;q=0.9",
|
|
96
|
+
},
|
|
97
|
+
body: requestBody,
|
|
98
|
+
responseType: "text"
|
|
99
|
+
});
|
|
100
|
+
//log(response.data)
|
|
101
|
+
const audioChunks = [];
|
|
102
|
+
for (const line of response.data.split(/\r?\n/)) {
|
|
103
|
+
const match = line.match(/"jQ1olc","\[\\"(.*)\\"]/);
|
|
104
|
+
if (match != null) {
|
|
105
|
+
const base64AudioChunk = match[1];
|
|
106
|
+
audioChunks.push(Buffer.from(base64AudioChunk, "base64"));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const resultMp3Stream = Buffer.concat(audioChunks);
|
|
110
|
+
return resultMp3Stream;
|
|
111
|
+
}
|
|
112
|
+
export const supportedLanguageLookup = {
|
|
113
|
+
"af": "Afrikaans",
|
|
114
|
+
"ar": "Arabic",
|
|
115
|
+
"bg": "Bulgarian",
|
|
116
|
+
"bn": "Bengali",
|
|
117
|
+
"bs": "Bosnian",
|
|
118
|
+
"ca": "Catalan",
|
|
119
|
+
"cs": "Czech",
|
|
120
|
+
"cy": "Welsh",
|
|
121
|
+
"da": "Danish",
|
|
122
|
+
"de": "German",
|
|
123
|
+
"el": "Greek",
|
|
124
|
+
"en": "English",
|
|
125
|
+
"eo": "Esperanto",
|
|
126
|
+
"es": "Spanish",
|
|
127
|
+
"et": "Estonian",
|
|
128
|
+
"fi": "Finnish",
|
|
129
|
+
"fr": "French",
|
|
130
|
+
"gu": "Gujarati",
|
|
131
|
+
"hi": "Hindi",
|
|
132
|
+
"hr": "Croatian",
|
|
133
|
+
"hu": "Hungarian",
|
|
134
|
+
"hy": "Armenian",
|
|
135
|
+
"id": "Indonesian",
|
|
136
|
+
"is": "Icelandic",
|
|
137
|
+
"it": "Italian",
|
|
138
|
+
"iw": "Hebrew",
|
|
139
|
+
"ja": "Japanese",
|
|
140
|
+
"jw": "Javanese",
|
|
141
|
+
"km": "Khmer",
|
|
142
|
+
"kn": "Kannada",
|
|
143
|
+
"ko": "Korean",
|
|
144
|
+
"la": "Latin",
|
|
145
|
+
"lv": "Latvian",
|
|
146
|
+
"mk": "Macedonian",
|
|
147
|
+
"ms": "Malay",
|
|
148
|
+
"ml": "Malayalam",
|
|
149
|
+
"mr": "Marathi",
|
|
150
|
+
"my": "Myanmar (Burmese)",
|
|
151
|
+
"ne": "Nepali",
|
|
152
|
+
"nl": "Dutch",
|
|
153
|
+
"no": "Norwegian",
|
|
154
|
+
"pl": "Polish",
|
|
155
|
+
"pt": "Portuguese",
|
|
156
|
+
"ro": "Romanian",
|
|
157
|
+
"ru": "Russian",
|
|
158
|
+
"si": "Sinhala",
|
|
159
|
+
"sk": "Slovak",
|
|
160
|
+
"sq": "Albanian",
|
|
161
|
+
"sr": "Serbian",
|
|
162
|
+
"su": "Sundanese",
|
|
163
|
+
"sv": "Swedish",
|
|
164
|
+
"sw": "Swahili",
|
|
165
|
+
"ta": "Tamil",
|
|
166
|
+
"te": "Telugu",
|
|
167
|
+
"th": "Thai",
|
|
168
|
+
"tl": "Filipino",
|
|
169
|
+
"tr": "Turkish",
|
|
170
|
+
"uk": "Ukrainian",
|
|
171
|
+
"ur": "Urdu",
|
|
172
|
+
"vi": "Vietnamese",
|
|
173
|
+
"zh-CN": "Chinese",
|
|
174
|
+
"zh-TW": "Chinese (Mandarin/Taiwan)",
|
|
175
|
+
"zh": "Chinese (Mandarin)",
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=GoogleTranslateTTS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoogleTranslateTTS.js","sourceRoot":"","sources":["../../src/synthesis/GoogleTranslateTTS.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import WebSocket from "ws";
|
|
2
|
+
export declare function synthesize(text: string, trustedClientToken: string, voice?: string, ssmlPitchString?: string, ssmlRateString?: string, ssmlVolumeString?: string): Promise<{
|
|
3
|
+
rawAudio: {
|
|
4
|
+
audioChannels: Float32Array[];
|
|
5
|
+
sampleRate: number;
|
|
6
|
+
};
|
|
7
|
+
timeline: import("../utilities/Timeline.js").Timeline;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function initializeWebsocketConnection(trustedClientToken: string): Promise<WebSocket>;
|
|
10
|
+
export declare function getVoiceList(trustedClientToken: string): Promise<any[]>;
|