UNPKG

node-edge-tts

Version:

node-edge-tts is a module that using Microsoft Edge's online TTS (Text-to-Speech) service on the Node.js

45 lines (42 loc) 1.93 kB
#!/usr/bin/env node const { EdgeTTS } = require('./dist/edge-tts.js') const yargs = require('yargs/yargs') const { hideBin } = require('yargs/helpers') const argv = yargs(hideBin(process.argv)) .usage('Usage: npx node-edge-tts [options]') .options({ text: { type: 'string', demandOption: true, alias: 't', describe: 'The text to be converted to speech' }, filepath: { type: 'string', alias: 'f', describe: 'The output file path' }, voice: { type: 'string', alias: 'v', describe: 'The voice to be used' }, lang: { type: 'string', alias: 'l', describe: 'The language to be used' }, outputFormat: { type: 'string', alias: 'o', describe: 'The output format' }, pitch: { type: 'string', describe: 'The pitch of the voice' }, rate: { type: 'string', alias: 'r', describe: 'The rate of the voice' }, volume: { type: 'string', describe: 'The volume of the voice'}, saveSubtitles: { type: 'boolean', alias: 's', describe: 'Whether to save subtitles' }, proxy: { type: 'string', alias: 'p', describe: 'example: http://localhost:7890' }, timeout: { type: 'number', describe: 'The timeout of the request' } }) .default({ filepath: `./output.mp3`, voice: 'zh-CN-XiaoyiNeural', lang: 'zh-CN', outputFormat: 'audio-24khz-48kbitrate-mono-mp3', pitch: 'default', rate: 'default', volume: 'default', saveSubtitles: false, timeout: 10000 }) .example(`npx node-edge-tts -t 'Hello world' -f './output.mp3'`) .argv const { text, filepath, voice, lang, outputFormat, pitch, rate, volume, saveSubtitles, proxy } = argv const tts = new EdgeTTS({ voice, lang, outputFormat, pitch, rate, volume, saveSubtitles, proxy }) ;(async () => { await tts.ttsPromise(text, filepath) console.log(`Converted to ${filepath}`) if (saveSubtitles) { console.log(`Saved subtitles to ${filepath}.json`) } process.exit() })()