{"id":21831373,"url":"https://github.com/nodef/extra-googletts","last_synced_at":"2025-08-30T17:41:01.644Z","repository":{"id":49898075,"uuid":"156867176","full_name":"nodef/extra-googletts","owner":"nodef","description":"Generate speech audio from super long text through machine (via \"Google TTS\", \"ffmpeg\").","archived":false,"fork":false,"pushed_at":"2025-04-08T17:11:51.000Z","size":318,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-15T21:19:56.871Z","etag":null,"topics":["audio","cli","console","extra","ffmpeg","google","googletts","long","machine","shell","speech","text","tts"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/extra-googletts","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nodef.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-11-09T13:40:24.000Z","updated_at":"2025-04-08T17:11:55.000Z","dependencies_parsed_at":"2024-04-12T13:54:15.585Z","dependency_job_id":"f499e5b6-609f-4b7e-a1e2-d79c9189473b","html_url":"https://github.com/nodef/extra-googletts","commit_stats":{"total_commits":90,"total_committers":2,"mean_commits":45.0,"dds":0.05555555555555558,"last_synced_commit":"885cbdee7cc34a07cf875d3c5d72bbdb5b4dbe3d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nodef/extra-googletts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-googletts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-googletts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-googletts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-googletts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nodef","download_url":"https://codeload.github.com/nodef/extra-googletts/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodef%2Fextra-googletts/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261186369,"owners_count":23121937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","cli","console","extra","ffmpeg","google","googletts","long","machine","shell","speech","text","tts"],"created_at":"2024-11-27T19:10:03.057Z","updated_at":"2025-06-21T20:03:16.922Z","avatar_url":"https://github.com/nodef.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Generate speech audio from super long text through machine, via [Google TTS], [ffmpeg].\n\u003e Do you want to:\n\u003e - Share your ideas anonymously on YouTube?\n\u003e - Pretend on phone that you are not a kid (Home Alone)?\n\u003e - Learn good english pronunciation for a speech?\n\u003e - Make your computer read out your school notes?\n\u003e - Experiment with various voices from around the globe?\n\u003e - Or, [Upload Wikipedia TTS videos on YouTube]?\n\nSample: [\"I want to order a stuffed crust pizza\"](https://clyp.it/kje2yfdk).\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n## Setup\n\n\n### Install\n\n1. Run `npm install -g extra-googletts` in **console**.\n2. To install this as a package use `npm install extra-googletts`.\n3. Make sure [ffmpeg] is installed (present in PATH).\n\n\n### Get service account key\n\n1. Create an [account] on [Google Cloud Platform].\n2. Create a [new project], and select it.\n3. Enable [Cloud Text-to-Speech API] for the project.\n4. Add [credentials] to your project.\n5. Which API are you using? `Cloud Text-to-Speech API`.\n6. Are you planning to use this API with App Engine or Compute Engine? `No, I’m not using them`.\n7. Select `What credentials do I need`?.\n8. Create a service account.\n9. Service account name: `googletts` (your choice).\n10. Role: `Project -\u003e Owner`.\n11. Service account ID: `googletts` (same as name).\n12. Key type: `JSON`.\n13. Select `Continue`.\n14. Copy downloaded file to a directory.\n15. Rename the file to `account_id.json`.\n\n\n### Set environment variable\n\n1. Copy path of `account_id.json`.\n2. Set environment variable `GOOGLE_APPLICATION_CREDENTIALS` to it.\n\u003e On Windows, use [RapidEE] to set environment variable.\n\n```bash\n# on linux or macos console\nexport GOOGLE_APPLICATION_CREDENTIALS=\"[PATH OF account_id.json]\"\n\n# on windows powershell\n$env:GOOGLE_APPLICATION_CREDENTIALS=\"[PATH OF account_id.json]\"\n```\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n## Console\n\n```bash\ngoogletts \"I want to order a stuffed crust pizza\"\n# out.mp3 created (yay!)\n\ngoogletts -t speech.txt -o speech.mp3\n# speech.mp3 created from text in speech.txt\n\ngoogletts \"Hello 911, my husband is in danger!\" -vg female\n# out.mp3 created with female voice\n\necho \"Dead man walking.\" | googletts --log -vn en-US-Wavenet-B\n# out.mp3 created with different male voice (log enabled)\n```\n\u003e Available [TTS voices]?\n\n\n### Reference\n\n```bash\ngoogletts [options] \u003ctext\u003e\n# text: input text\n\n# Options:\n# --help:        show this help\n# -l, --log:     enable log\n# -o, --output:  set output audio file (out.mp3)\n# -t, --text:    set input text file\n# -r, --retries: set speech synthesis retries (8)\n# -a, --acodec:  set acodec (copy)\n# -ae, --audio_encoding:  set audio encoding (MP3)\n# -af, --audio_frequency: set audio frequency/sample rate\n# -lc, --language_code:   set language code (en-US)\n# -vn, --voice_name:      set voice name\n# -vg, --voice_gender:    set voice gender (neutral)\n# -vp, --voice_pitch:     set voice pitch change (0.0)\n# -vr, --voice_rate:      set voice speaking rate (1.0)\n# -vv, --voice_volume:    set voice volume gain in dB (0.0)\n# -qb, --quote_break:        set quoted text break time (250)\n# -qe, --quote_emphasis:     set quoted text emphasis level (moderate)\n# -hb, --heading_break:      set heading text break time (4000)\n# -hd, --heading_difference: set heading text break difference (250)\n# -he, --heading_emphasis:   set heading text emphasis level (strong)\n# -eb, --ellipsis_break:     set ellipsis break time (1500)\n# -db, --dash_break:         set dash break time (500)\n# -nb, --newline_break:      set newline break time (1000)\n# -bs, --block_separator:    set block separator (.)\n# -bl, --block_length:       set block length (5000)\n# -ccf, --config_credentials_file: set google credentials path\n\n# Environment variables:\n$TTS_LOG     # enable log (0)\n$TTS_OUTPUT  # set output audio file (out.mp3)\n$TTS_TEXT    # set input text file\n$TTS_RETRIES # set speech synthesis retries (8)\n$TTS_ACODEC  # set acodec (copy)\n$TTS_AUDIO_ENCODING     # set audio encoding (MP3)\n$TTS_AUDIO_FREQUENCY    # set audio frequency/sample rate\n$TTS_LANGUAGE_CODE      # set language code (en-US)\n$TTS_VOICE_NAME         # set voice name\n$TTS_VOICE_GENDER       # set voice gender (neutral)\n$TTS_VOICE_PITCH        # set voice pitch change (0.0)\n$TTS_VOICE_RATE         # set voice speaking rate (1.0)\n$TTS_VOICE_VOLUME       # set voice volume gain in dB (0.0)\n$TTS_QUOTE_BREAK        # set quoted text break time (250)\n$TTS_QUOTE_EMPHASIS     # set quoted text emphasis level (moderate)\n$TTS_HEADING_BREAK      # set heading text break time (4000)\n$TTS_HEADING_DIFFERENCE # set heading text break difference (250)\n$TTS_HEADING_EMPHASIS   # set heading text emphasis level (strong)\n$TTS_ELLIPSIS_BREAK     # set ellipsis break time (1500)\n$TTS_DASH_BREAK         # set dash break time (500)\n$TTS_NEWLINE_BREAK      # set newline break time (1000)\n$TTS_BLOCK_SEPARATOR    # set block separator (.)\n$TTS_BLOCK_LENGTH       # set block length (5000)\n$GOOGLE_APPLICATION_CREDENTIALS # set google credentials path\n```\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n## Package\n\n```javascript\nconst googletts = require('extra-googletts');\n\nawait googletts('out.mp3', 'I want to order a stuffed crust pizza');\n// out.mp3 created (yay!)\n\nconst fs = require('fs');\nvar speech = fs.readFileSync('speech.txt', 'utf8');\nawait googletts('speech.mp3', speech)\n// speech.mp3 created from text in speech.txt\n\nawait googletts('out.mp3', 'Hello 911, my husband is in danger!', {\n  voice: {gender: 'FEMALE'}\n});\n// out.mp3 created with female voice\n\nawait googletts('out.mp3', 'Dead man walking.', {\n  voice: {name: 'en-US-Wavenet-B'}, log: true\n});\n// out.mp3 created with different male voice (log enabled)\n```\n\n\n### Reference\n\n```javascript\nconst googletts = require('extra-googletts');\n\ngoogletts(output, text, options={})\n// output:  output audio file\n// text:    input text\n// options: given below\n// -\u003e Promise \u003ctable of contents\u003e\n\n// Default options:\noptions = {\n  stdio: [0, 1, 2], // set child process stdio\n  log: false,       // enable log\n  retries: 8,       // set speech synthesis retries\n  acodec: 'copy',   // set audio acodec\n  audio: {\n    encoding: 'MP3',     // set audio encoding\n    frequency: 0,        // set audio frequency/sample rate\n  },\n  language: {\n    code: 'en-US'        // set language code\n  },\n  voice: {\n    name: null,          // set voice name\n    gender: 'NEUTRAL'    // set voice SSML gender\n    pitch: 0.0,          // set voice pitch change\n    rate: 1.0,           // set voice speaking rate\n    volume: 0.0,         // set voice volume gain in dB\n  }\n  quote: {\n    break: 250,          // set quoted text break time\n    emphasis: 'moderate' // set quoted text emphasis level\n  },\n  heading: {\n    break: 4000,         // set heading text break time\n    difference: 250,     // set heading text break difference\n    emphasis: 'strong',  // set heading text emphasis level\n  },\n  ellipsis: {\n    break: 1500          // set ellipsis break time\n  },\n  dash: {\n    break: 500           // set dash break time\n  },\n  newline: {\n    break: 1000          // set newline break time\n  },\n  block: {\n    separator: '.'       // set block separator\n    length: 5000,        // set block length\n  },\n  config: {\n    credentialsFile: null // set path to credentials\n  },\n  params: null            // set synthesize speech parameters \"directly\"\n}\n```\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n## Similar\n\nDo you need anything similar?\n- [extra-youtubeuploader] can upload videos with caption to YouTube.\n- [extra-stillvideo] can generate video from audio and image.\n\nSuggestions are welcome. Please [create an issue].\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n[![nodef](https://i.imgur.com/LPVfMny.jpg)](https://nodef.github.io)\n\u003e References: [SSML], [TTS voices], [TTS client docs].\n\n[Google TTS]: https://cloud.google.com/text-to-speech/\n[ffmpeg]: https://ffmpeg.org\n[Upload Wikipedia TTS videos on YouTube]: https://www.youtube.com/results?search_query=wikipedia+audio+article\n\n[Enable API]: https://console.cloud.google.com/flows/enableapi?apiid=texttospeech.googleapis.com\n[Setup authentication]: https://cloud.google.com/docs/authentication/getting-started\n[account]: https://accounts.google.com/signup\n[Google Cloud Platform]: https://console.developers.google.com/\n[new project]: https://console.cloud.google.com/projectcreate\n[Cloud Text-to-Speech API]: https://console.cloud.google.com/apis/library/texttospeech.googleapis.com\n[credentials]: https://console.cloud.google.com/apis/credentials/wizard\n[RapidEE]: https://www.rapidee.com/en/about\n\n[extra-stillvideo]: https://www.npmjs.com/package/extra-stillvideo\n[extra-youtubeuploader]: https://www.npmjs.com/package/extra-youtubeuploader\n[create an issue]: https://github.com/nodef/extra-googletts/issues\n\n![](https://ga-beacon.deno.dev/G-RC63DPBH3P:SH3Eq-NoQ9mwgYeHWxu7cw/github.com/nodef/extra-googletts)\n\n[SSML]: https://developers.google.com/actions/reference/ssml\n[TTS voices]: https://cloud.google.com/text-to-speech/docs/voices\n[TTS client docs]: https://cloud.google.com/nodejs/docs/reference/text-to-speech/0.1.x/v1beta1.TextToSpeechClient\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodef%2Fextra-googletts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodef%2Fextra-googletts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodef%2Fextra-googletts/lists"}