{"id":17688330,"url":"https://github.com/jonelo/jadapterfornativetts","last_synced_at":"2025-05-13T00:47:06.507Z","repository":{"id":91746456,"uuid":"327023015","full_name":"jonelo/jAdapterForNativeTTS","owner":"jonelo","description":"A simple pure Java library that allows you to use the native Text To Speech engine provided by your operating system by using a ProcessBuilder without JNI. Microsoft Windows, GNU/Linux, and macOS are supported.","archived":false,"fork":false,"pushed_at":"2023-01-04T00:37:16.000Z","size":158,"stargazers_count":10,"open_issues_count":1,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-26T16:49:37.110Z","etag":null,"topics":["java","linux","macos","text-to-speech","tts","windows"],"latest_commit_sha":null,"homepage":"","language":"Java","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/jonelo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2021-01-05T14:26:37.000Z","updated_at":"2025-02-02T07:05:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"747325fa-661a-4de5-bc0e-e0b2effd2181","html_url":"https://github.com/jonelo/jAdapterForNativeTTS","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2FjAdapterForNativeTTS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2FjAdapterForNativeTTS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2FjAdapterForNativeTTS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonelo%2FjAdapterForNativeTTS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonelo","download_url":"https://codeload.github.com/jonelo/jAdapterForNativeTTS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243281075,"owners_count":20266134,"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":["java","linux","macos","text-to-speech","tts","windows"],"created_at":"2024-10-24T11:44:10.888Z","updated_at":"2025-03-12T19:31:52.501Z","avatar_url":"https://github.com/jonelo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jAdapterForNativeTTS\n\n## What the project is for\nIt is a simple Java library with a Java API that allows you to use the native Text To Speech features provided by your operating system.\nMicrosoft Windows, GNU/Linux, and macOS are supported.\n\n\n## What are the system requirements\n* Java 11 or later\n* PowerShell on Microsoft Windows 10, or 11\n* spd-say on GNU/Linux\n* say on macOS 10.13, 10.14, 10.15, 11, 12, or 13\n* installed voices (see also \"How to add more voices\")\n\n## How to use it\n### Code Example\nIn your Java code, simply obtain a speechEngine object (actually you don't have to care about what OS you are using),\nset the voice of your choice either directly or by providing voice preferences and let the engine say some words. This is a short code snippet in order to demonstrate some API features:\n\n```java\n    String text = \"The answer to the ultimate question of life, the universe, and everything is 42\";\n    try {\n        SpeechEngine speechEngine = SpeechEngineNative.getInstance();\n        List\u003cVoice\u003e voices = speechEngine.getAvailableVoices();\n\n        System.out.println(\"For now the following voices are supported:\\n\");\n        for (Voice voice : voices) {\n            System.out.printf(\"%s%n\", voice);\n        }\n\n        // We want to find a voice according our preferences\n        VoicePreferences voicePreferences = new VoicePreferences();\n        voicePreferences.setLanguage(\"en\"); //  ISO-639-1\n        voicePreferences.setCountry(\"GB\"); // ISO 3166-1 Alpha-2 code\n        voicePreferences.setGender(VoicePreferences.Gender.FEMALE);\n        Voice voice = speechEngine.findVoiceByPreferences(voicePreferences);\n\n        // simple fallback just in case our preferences didn't match any voice\n        if (voice == null) {\n            System.out.printf(\"Warning: Voice has not been found by the voice preferences %s%n\", voicePreferences);\n            voice = voices.get(0); // it is guaranteed that the speechEngine supports at least one voice\n            System.out.printf(\"Using \\\"%s\\\" instead.%n\", voice);\n        }\n\n        speechEngine.setVoice(voice.getName());\n        speechEngine.say(text);\n\n    } catch (SpeechEngineCreationException | IOException e) {\n        System.err.println(e.getMessage());\n    }\n```\n### Maven\n\nPlease stay tuned for an artifact on Maven Central.\n\n### CLI with TUI\nFor demonstration purposes, you can also call the Text User Interface (see also Main.java):\n\n```\n\u003e java -jar jadapter-for-native-tts-0.12.0.jar \"The answer to the ultimate question of life, the universe, and everything is 42\"\n0: name='Microsoft Hedda Desktop', culture='de-DE', gender='Female', age='Adult', description='Microsoft Hedda Desktop (de_DE, Female)'\n1: name='Microsoft Hedda', culture='de-DE', gender='Female', age='Adult', description='Microsoft Hedda (de_DE, Female)'\n2: name='Microsoft Katja', culture='de-DE', gender='Female', age='Adult', description='Microsoft Katja (de_DE, Female)'\n3: name='Microsoft Stefan', culture='de-DE', gender='Male', age='Adult', description='Microsoft Stefan (de_DE, Male)'\n4: name='Microsoft George', culture='en-GB', gender='Male', age='Adult', description='Microsoft George (en_GB, Male)'\n5: name='Microsoft Hazel', culture='en-GB', gender='Female', age='Adult', description='Microsoft Hazel (en_GB, Female)'\n6: name='Microsoft Susan', culture='en-GB', gender='Female', age='Adult', description='Microsoft Susan (en_GB, Female)'\n7: name='Microsoft David', culture='en-US', gender='Male', age='Adult', description='Microsoft David (en_US, Male)'\n8: name='Microsoft Mark', culture='en-US', gender='Male', age='Adult', description='Microsoft Mark (en_US, Male)'\n9: name='Microsoft Zira', culture='en-US', gender='Female', age='Adult', description='Microsoft Zira (en_US, Female)'\n10: name='Microsoft Helena', culture='es-ES', gender='Female', age='Adult', description='Microsoft Helena (es_ES, Female)'\n11: name='Microsoft Laura', culture='es-ES', gender='Female', age='Adult', description='Microsoft Laura (es_ES, Female)'\n12: name='Microsoft Pablo', culture='es-ES', gender='Male', age='Adult', description='Microsoft Pablo (es_ES, Male)'\n13: name='Microsoft Hortense', culture='fr-FR', gender='Female', age='Adult', description='Microsoft Hortense (fr_FR, Female)'\n14: name='Microsoft Julie', culture='fr-FR', gender='Female', age='Adult', description='Microsoft Julie (fr_FR, Female)'\n15: name='Microsoft Paul', culture='fr-FR', gender='Male', age='Adult', description='Microsoft Paul (fr_FR, Male)'\n16: name='Microsoft Cosimo', culture='it-IT', gender='Male', age='Adult', description='Microsoft Cosimo (it_IT, Male)'\n17: name='Microsoft Elsa', culture='it-IT', gender='Female', age='Adult', description='Microsoft Elsa (it_IT, Female)'\n18: name='Microsoft Bengt', culture='sv-SE', gender='Male', age='Adult', description='Microsoft Bengt (sv_SE, Male)'\n19: name='Microsoft Karsten', culture='de-CH', gender='Male', age='Adult', description='Microsoft Karsten (de_CH, Male)'\n20: name='Microsoft Hazel Desktop', culture='en-GB', gender='Female', age='Adult', description='Microsoft Hazel Desktop (en_GB, Female)'\n21: name='Microsoft David Desktop', culture='en-US', gender='Male', age='Adult', description='Microsoft David Desktop (en_US, Male)'\n22: name='Microsoft Zira Desktop', culture='en-US', gender='Female', age='Adult', description='Microsoft Zira Desktop (en_US, Female)'\n23: name='Microsoft Helena Desktop', culture='es-ES', gender='Female', age='Adult', description='Microsoft Helena Desktop (es_ES, Female)'\n24: name='Microsoft Hortense Desktop', culture='fr-FR', gender='Female', age='Adult', description='Microsoft Hortense Desktop (fr_FR, Female)'\n25: name='Microsoft Elsa Desktop', culture='it-IT', gender='Female', age='Adult', description='Microsoft Elsa Desktop (it_IT, Female)'\nEnter the voice id (1-25) or hit enter to specify voice preferences: \nLanguage: en\nCountry: GB\nGender: female\nYou have selected the following voice preferences:\nlanguage='en', country='GB', gender='FEMALE', age=''\nI have found the following voice matching your voice preferences:\nname='Microsoft Hazel', culture='en-GB', gender='Female', age='Adult', description='Microsoft Hazel (en_GB, Female)'\n```\n\n## How to add more voices\n### Windows\n\nsee also https://support.microsoft.com/en-us/topic/how-to-download-text-to-speech-languages-for-windows-10-d5a6b612-b3ae-423f-afa5-4f6caf1ec5d3\nand https://github.com/jonelo/unlock-win-tts-voices\n\n### macOS\nsee also https://support.apple.com/de-de/guide/mac-help/mchlp2290/mac\n\n## The license\n\nThe license that the project is offered under is the [MIT license](https://choosealicense.com/licenses/mit/).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonelo%2Fjadapterfornativetts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonelo%2Fjadapterfornativetts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonelo%2Fjadapterfornativetts/lists"}