{"id":19413479,"url":"https://github.com/wisehackermonkey/ultimate-tts-reader","last_synced_at":"2026-02-16T19:07:46.213Z","repository":{"id":132673753,"uuid":"256003636","full_name":"wisehackermonkey/ultimate-tts-reader","owner":"wisehackermonkey","description":"awesome app to read text from the clipboard when you press the insert key","archived":false,"fork":false,"pushed_at":"2024-09-23T07:37:40.000Z","size":109582,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T00:51:15.366Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://wisehackermonkey.github.io/ultimate-tts-reader/","language":"Python","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/wisehackermonkey.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}},"created_at":"2020-04-15T18:29:39.000Z","updated_at":"2022-06-17T17:27:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"d9d69512-69b5-45ac-905c-933e9db0e12c","html_url":"https://github.com/wisehackermonkey/ultimate-tts-reader","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisehackermonkey%2Fultimate-tts-reader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisehackermonkey%2Fultimate-tts-reader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisehackermonkey%2Fultimate-tts-reader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wisehackermonkey%2Fultimate-tts-reader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wisehackermonkey","download_url":"https://codeload.github.com/wisehackermonkey/ultimate-tts-reader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248874478,"owners_count":21175852,"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":[],"created_at":"2024-11-10T12:33:24.621Z","updated_at":"2026-02-16T19:07:46.174Z","avatar_url":"https://github.com/wisehackermonkey.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ultimate-tts-reader\n####  awesome app to read text from the clipboard when you press the insert key\n```\nby oran collins\ngithub.com/wisehackermonkey\noranbusiness@gmail.com\n20200415\n```\n![Screenshot_1](https://i.imgur.com/lhVK1NM.jpg)\n# Install\n\n\u003e Prebuilt windows binaries are avaiable under releases \n\n### [ultimate-tts-reader/releases](https://github.com/wisehackermonkey/ultimate-tts-reader/releases)\n\n# how to install (source)\n\n```\ngit clone https://github.com/wisehackermonkey/ultimate-tts-reader.git\ncd ultimate-tts-reader\npip install -r requirements.txt\n```\n\n# how to run \n\n#### windows only\n```\npython ./main.py\n```\n## Useage\n```\ncopy something to the clipboard\npress 'insert' on the keyboard\nthe computer should read the text to you!\n```\n# Dev Log updates\n\n# Update (20200708)\n### Improvements \n![](./Screenshot_2.png)\n- increased window size to fit title text\n- app now starts minimized \n\n\n## How to build windows exe\n### install pyinstaller \n```\n\u003epip install pyinstaller \n```\n```\ncd /path/to/project\n```\n### Simple build\n```\npyinstaller --hidden-import=pyttsx3.drivers  --hidden-import=pyttsx3.drivers.sapi5 --noconsole --onefile ultimate-tts-reader.py\n```\n### clean build \n```\npyinstaller --noconsole --hidden-import=pyttsx3.drivers  --hidden-import=pyttsx3.drivers.sapi5 --specpath ${PWD}/builds --distpath ${PWD}/builds/dist --workpath ${PWD}/builds/build --onefile ultimate-tts-reader.py \n```\n### Advanced (windows powershell) Build, move exe  to to windows folder, includes moving of build files to ./builds \n```\nadd move to windows folder \nNOTE mv -force overwrites the exe (and is a powershell command)\n\n\u003e pyinstaller --noconsole --hidden-import=pyttsx3.drivers  --hidden-import=pyttsx3.drivers.sapi5 --specpath ${PWD}/builds --distpath ${PWD}/builds/dist --workpath ${PWD}/builds/build --onefile ultimate-tts-reader.py ; mv -force ${PWD}/builds/dist/ultimate-tts-reader.exe ${PWD}/windows/ultimate-tts-reader.exe\n```\n\n### Advanced (plus zip) (windows powershell) \n```\n\u003e pyinstaller --noconsole --hidden-import=pyttsx3.drivers  --hidden-import=pyttsx3.drivers.sapi5 --specpath ${PWD}/builds --distpath ${PWD}/builds/dist --workpath ${PWD}/builds/build --onefile ultimate-tts-reader.py ; mv -force ${PWD}/builds/dist/ultimate-tts-reader.exe ${PWD}/windows/ultimate-tts-reader.exe ; $date = Get-Date -Format \"yyyyMMdd\"; Compress-Archive -force -Path ${PWD}/windows/ultimate-tts-reader.exe -DestinationPath ${PWD}/windows/ultimate-tts-reader_windows_${date}.zip\n\n\n### Auto update setup\n```\npyupdater init \n    copy key 'keypack.pyu'\npyupdater keys -i  \npyupdater settings --plugin scp    \n```\n### Auto update build and push\n```bash\n\non remote server\n(TESTING)\nsudo docker run --rm -it -p 7777:8080 --name simple -v /root/version-ultimate-tts-reader:/var/www:ro trinitronx/python-simplehttpserver\n\n(deployment)\nsudo docker run -d --restart=always -p 7777:8080 --name static-serve -v /root/version-ultimate-tts-reader:/var/www:ro trinitronx/python-simplehttpserver\n\n\npyupdater build --onefile --hidden-import=\"pkg_resources.py2_warn\"  --app-version=1.4.0 ultimate-tts-reader.py\npyupdater build --onefile --hidden-import=\"pypiwin32\"  --app-version=1.4.0 ultimate-tts-reader.py\npyupdater build --onefile --hidden-import=\"win32api\" --hidden-import=\"pkg_resources.py2_warn\" --app-version=1.4.0 ultimate-tts-reader.py\npyupdater pkg --process\npyupdater pkg --sign\n```\n\n```\n\n## Improvements\n- start minimized \n- pause key/button\n- fix quit on escape\n- voice\n - slow down the voice\n - change voice\n- catch KeyboardInterrupt graceful shutdown\n- ~~Copy selected text to clipboard or copy selected text and read it~~\n- ~~dependence injection\n- ~~gui mvp\n- ~~change stop use TK to quit\n- ~~change stop key to fn + insert\n\n- auto-update\n- add zip to releases page github\n- ~~increase size of window~~\n- ~~start minimized~~~\n\n\n## Links\n```\ntts\nhttps://pyttsx3.readthedocs.io/en/latest/engine.html#examples\n\nkeyboard\nhttps://pynput.readthedocs.io/en/latest/keyboard.html\n\nposible solution to pause key\nhttps://github.com/nateshmbhat/pyttsx3/issues/35\n\nTkinter gui\nhttps://docs.python.org/3/library/tkinter.html\n\nPyinstaller\nhttps://pyinstaller.readthedocs.io/en/stable/usage.html\n\npyinstaller fix output file destination\nPython: how to specify output folders in Pyinstaller .spec file\nhttps://stackoverflow.com/questions/37319911/python-how-to-specify-output-folders-in-pyinstaller-spec-file\n\npyinstaller fix pyttsx3 not found error\n\u003e pyinstaller --hidden-import=pyttsx3.drivers song_dl.py\n\nhttps://stackoverflow.com/questions/58133083/modulenotfounderror-no-module-named-pyttsx3-drivers-file-compiled-with-pyins\n\n```\n\n\n# Scratch pad\n```\npyinstaller --onefile --hidden-import=\"pkg_resources.py2_warn\"  ultimate-tts-reader.py\n\npyinstaller --console --hidden-import=pyttsx3.drivers  --hidden-import=\"pkg_resources.py2_warn\"  --hidden-import=pyttsx3.drivers.sapi5 --onefile ultimate-tts-reader.py\n\n#### try fix v1 (fail)\npyinstaller --console --hidden-import=win32api --hidden-import=pyttsx3.drivers  --hidden-import=\"pkg_resources.py2_warn\"  --hidden-import=pyttsx3.drivers.sapi5 --onefile ultimate-tts-reader.py\n\n22885 WARNING: library coredll required via ctypes not found\n23100 INFO: Including run-time hook 'pyi_rth_pkgres.py'\n23106 INFO: Including run-time hook 'pyi_rth_win32comgenpy.py'\n```\n\u003cscript type=\"text/javascript\" src=\"https://www.free-counters.org/count/5vlj\"\u003e\u003c/script\u003e\u003cbr\u003e\n \u003ca href='http://www.counter-zaehler.de'\u003ecounter skript\u003c/a\u003e \u003cscript type='text/javascript' src='https://www.whomania.com/ctr?id=67fe581f5c91eee6e3062f6fdd9aa156c648c349'\u003e\u003c/script\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisehackermonkey%2Fultimate-tts-reader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwisehackermonkey%2Fultimate-tts-reader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwisehackermonkey%2Fultimate-tts-reader/lists"}