{"id":13797871,"url":"https://github.com/CoughDrop/acapela","last_synced_at":"2025-05-13T04:32:32.070Z","repository":{"id":44035280,"uuid":"61326818","full_name":"CoughDrop/acapela","owner":"CoughDrop","description":"acapela TTS module for Electron","archived":false,"fork":false,"pushed_at":"2022-12-10T10:58:18.000Z","size":581,"stargazers_count":4,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-04T00:02:46.223Z","etag":null,"topics":["aac","electron","nodejs","speech-synthesis"],"latest_commit_sha":null,"homepage":null,"language":"C","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/CoughDrop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-16T21:23:46.000Z","updated_at":"2021-04-11T12:33:17.000Z","dependencies_parsed_at":"2023-01-26T06:30:51.686Z","dependency_job_id":null,"html_url":"https://github.com/CoughDrop/acapela","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoughDrop%2Facapela","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoughDrop%2Facapela/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoughDrop%2Facapela/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoughDrop%2Facapela/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoughDrop","download_url":"https://codeload.github.com/CoughDrop/acapela/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225176630,"owners_count":17433020,"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":["aac","electron","nodejs","speech-synthesis"],"created_at":"2024-08-04T00:00:35.406Z","updated_at":"2024-11-18T12:31:45.993Z","avatar_url":"https://github.com/CoughDrop.png","language":"C","funding_links":[],"categories":["Speech Synthesis"],"sub_categories":[],"readme":"# Acapela\nNode module for supporting Acapela voices in an Electron app. Outside of Electron\nyour mileage may vary. Windows only.\n\n## Requirements\nBuilt on top of Acapela's speech engine. You'll\nneed to raeach out to Acapela to get the needed libraries and license\nfiles. `AcaTTS.dll`, `AcaTTS.64.dll` and `AcaTTS.ini` are all required\nto be in the main directory of your app (not the library's directory,\nthe Electron app's root folder). The app also expects to have \nthe required `/bin` and `/data` directores in the same directory.\n\nTo compile the app you'll first need to get license files from Acapela\nand put those in the library's `/include` directory. Rename the .h file\nto `license.h` and then you can run `node-gyp rebuild` or however you\nbuild modules.\n\n## Usage\n\n`npm install https://www.github.com/coughdrop/acapela.git`\n\nThe easiest way to use the library is to require `extra-tts.js` in the \nacapela module. If you require it in the app process then you can do things\nlike the following:\n\n```\nvar extra_tts = require('acapela/extra-tts.js');\n\nextra_tts.getAvailableVoices({success: function(list) {\n  console.log(list);\n}});\n\nextra_tts.speakText({\n  voice_id: \"\u003cvoice id from the list\u003e\",\n  text: \"hello my friends, I am speaking to you\",\n  success: function() {\n    console.log(\"done speaking!\");\n  }\n});\n\nextra_tts.stopSpeakingText();\n```\n\n### Chrome Memory Issue\n\nChrome apparently doesn't like downloading and unzipping really large files in a \nbrowser process, and on older computers also seems to struggle with the acapela\nlibraries, it'll sometimes result in the entire window turning black. You\ncan get around this in electron by requiring `extra-tts.js` on the main process,\nand `extra-tts-ipc.js` on the rendering process. You'll also need a little extra\ncode on the main process, something like:\n\n```\nipcMain.on('extra-tts-exec', function(event, message) {\n  var sender = event.sender;\n  var opts = JSON.parse(str);\n  var args = opts.args;\n  opts[0].success = function(res) {\n    sender.send('extra-tts-exec-result', JSON.stringify({\n      success: true,\n      callback_id: opts.success_id,\n      result: res\n    });\n  };\n  opts[0].progress = function(res) {\n    sender.send('extra-tts-exec-result', JSON.stringify({\n      progress: true,\n      callback_id: opts.progress_id,\n      result: res\n    });\n  };\n  opts[0].error = function(err) {\n    sender.send('extra-tts-exec-result', JSON.stringify({\n      error: true,\n      callback_id: opts.error_id,\n      result: err\n    });\n  };\n  extra_tts[opts.method].apply(extra_tts, args);\n});\n\nipcMain.on('extra-tts-ready', function() {\n  event.sender.send('extra-tts-ready', 'ready');\n});\n```\n\n## License\nMIT License\n\n## TODO\n- add examples (in the mean time, you can see how we're using it in\nthe TTS section here, https://github.com/CoughDrop/coughdrop/blob/master/app/frontend/app/utils/capabilities.js)\n- specs (stop judging me, I'm not a native app developer)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoughDrop%2Facapela","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCoughDrop%2Facapela","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoughDrop%2Facapela/lists"}