{"id":13622183,"url":"https://github.com/discordier/sam","last_synced_at":"2025-04-15T05:33:56.385Z","repository":{"id":26353382,"uuid":"108462075","full_name":"discordier/sam","owner":"discordier","description":"Software Automatic Mouth - Tiny Speech Synthesizer ","archived":false,"fork":true,"pushed_at":"2024-07-22T17:41:04.000Z","size":6449,"stargazers_count":623,"open_issues_count":4,"forks_count":74,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-13T19:13:58.039Z","etag":null,"topics":["c64","phonemes","reciter","software-automatic-mouth","speech-synthesis"],"latest_commit_sha":null,"homepage":"https://discordier.github.io/sam/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"s-macke/SAM","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/discordier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-26T20:27:45.000Z","updated_at":"2025-04-10T10:25:58.000Z","dependencies_parsed_at":"2023-01-16T22:30:23.970Z","dependency_job_id":null,"html_url":"https://github.com/discordier/sam","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/discordier%2Fsam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/discordier%2Fsam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/discordier%2Fsam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/discordier%2Fsam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/discordier","download_url":"https://codeload.github.com/discordier/sam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249016001,"owners_count":21198824,"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":["c64","phonemes","reciter","software-automatic-mouth","speech-synthesis"],"created_at":"2024-08-01T21:01:15.335Z","updated_at":"2025-04-15T05:33:56.378Z","avatar_url":"https://github.com/discordier.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# SAM Software Automatic Mouth\n\n## What is SAM?\n\nThis is a vanilla Javascript port of the Text-To-Speech (TTS) software\nSAM (Software Automatic Mouth) for the Commodore C64 published in the\nyear 1982 by Don't Ask Software (now SoftVoice, Inc.).\n\nIt is based on the adaption to C by\n[Stefan Macke](https://github.com/s-macke/SAM)\nand the refactorings by \n[Vidar Hokstad](https://github.com/vidarh/SAM) and\n[8BitPimp](https://github.com/8BitPimp/SAM)\n\nIt includes a Text-To-Phoneme converter called reciter and a\nPhoneme-To-Speech routine for the final output.\n\nIt aims for low memory impact and file size which is the reason I want\nto avoid the \n[Emscripten conversion](http://simulationcorner.net/index.php?page=sam)\nby Stefan (which weights about 414kb).\n\nFor further details, refer to\n[retrobits.net](http://www.retrobits.net/atari/sam.shtml)\n\nSome analytics of S.A.M. in general can be found in Artyom Skrobov's\n(@tyomitch) blog who also provided pretty insightful PRs.\nVisit his blog https://habr.com/ru/post/500764/ (russian)\nor the google translated version\n[here](https://habr-com.translate.goog/ru/post/500764/?_x_tr_sl=auto\u0026_x_tr_tl=en).\n\n## Usage\n\nRequire the module via yarn: `yarn add sam-js`\n\nUse it in your program:\n\n```javascript\nimport SamJs from 'sam-js';\n\nlet sam = new SamJs();\n\n// Play \"Hello world\" over the speaker.\n// This returns a Promise resolving after playback has finished.\nsam.speak('Hello world');\n\n// Generate a wave file containing \"Hello world\" and download it.\nsam.download('Hello world');\n\n// Render the passed text as 8bit wave buffer array (Uint8Array).\nconst buf8 = sam.buf8('Hello world');\n\n// Render the passed text as 32bit wave buffer array (Float32Array).\nconst buf32 = sam.buf32('Hello world');\n```\n\n### Typical voice values\n\n```\nDESCRIPTION          SPEED     PITCH     THROAT    MOUTH\nElf                   72        64        110       160\nLittle Robot          92        60        190       190\nStuffy Guy            82        72        110       105\nLittle Old Lady       82        32        145       145\nExtra-Terrestrial    100        64        150       200\nSAM                   72        64        128       128\n```\n\n## Original docs.\n\nI have bundled a copy of the original manual in this repository, see\nthe [manual](docs/manual.md) file in the [docs](docs) directory.\n\n## License\n\nThe software is a reverse-engineered version of a commercial software\npublished more than 30 years ago. The current copyright holder is \nSoftVoice, Inc. (www.text2speech.com)\n\nAny attempt to contact the company failed. The website was last\nupdated in the year 2009. The status of the original\nsoftware can therefore best described as Abandonware\n(http://en.wikipedia.org/wiki/Abandonware)\n\nAs long this is the case I cannot put my code under any specific open\nsource software license Use it at your own risk.\n\nContact\n\nIf you have questions don' t hesitate to ask me. If you discovered some\nnew knowledge about the code please file an issue.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiscordier%2Fsam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiscordier%2Fsam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiscordier%2Fsam/lists"}