{"id":18838297,"url":"https://github.com/rhvoice/packages","last_synced_at":"2026-04-02T14:51:18.988Z","repository":{"id":40653543,"uuid":"451984418","full_name":"RHVoice/packages","owner":"RHVoice","description":"RHVoice data package directory","archived":false,"fork":false,"pushed_at":"2026-03-25T16:39:11.000Z","size":185,"stargazers_count":5,"open_issues_count":1,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-25T21:26:30.187Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RHVoice.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-25T17:54:41.000Z","updated_at":"2026-03-25T16:36:53.000Z","dependencies_parsed_at":"2024-06-02T12:59:08.540Z","dependency_job_id":"d4fa10d9-02b5-4cc9-b443-4a19a407122d","html_url":"https://github.com/RHVoice/packages","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/RHVoice/packages","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fpackages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fpackages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fpackages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fpackages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RHVoice","download_url":"https://codeload.github.com/RHVoice/packages/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fpackages/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31308446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-08T02:38:41.854Z","updated_at":"2026-04-02T14:51:18.968Z","avatar_url":"https://github.com/RHVoice.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RHVoice packages directory\n\n## Purpose\n\nThis repository contains the information about the data packages, that\nis the language and voice packages.\n\nThe information about each language or voice is stored in one or more\nseparate json files (see the src/ directory).\n\nThe build script creates a single json file merging all the\ninformation. This file itself is not tracked by git, but when one of\nthe source files is updated and the update is approved, the newly\ngenerated single json will be uploaded to our server. This file will\nbe downloaded by the app for Android and hopefully other clients in\nthe future, so no applications need to be recompiled and updated on\nthe users' devices to give them access to the up-to-date versions of\nthe language and voice packages, unless those packages require\nfeatures only available in a later version of the RHVoice core.\n\n## Branches and versions\n\n### Main\n\nAny updates first appear in this branch. No users will have access to\nthem at this point. This is for testing by developers.\n\n### Alpha\n\nWhen an update has been tested by the developers, it will be\ncherry-picked into the alpha branch. The json file built from this\nbranch is used by the Alpha version of the RHVoice app, so the updates\nto this branch will be available to the testers using that version of\nthe app.\n\n### Stable branches\n\nWhen the update is considered ready for general use, it will be\ncherry-picked into one or more of the stable branches. The only such\nbranch so far is 1.8. But future updates of the RHVoice core may make\nit necessary to introduce new stable branches. Contributors will need\nto document the usage of any core features introduced after RHVoice\nv1.8.\n\nThe production version of the app will contain the latest core and use\nthe data from the most recent stable branch.\n\n## For contributors\n\nIf you want to publish a new voice or an update to the existing\nlanguage or voice, follow these steps.\n\n### Create the package.\n\nPackages are simply zip archives of the data. Everything in your\ndata/languages/\u0026lt;language\u0026gt; or data/voices/\u0026lt;voice\u0026gt; directory goes into\nthe archive. If you compile under Linux or Windows, you will find a\nready-made archive in build/linux/packages/zip or build/windows/packages/zip.\n\n### Upload your package\n\nYou need to provide or arrange the hosting for your packages.\n\nThe server hosting your packages must support https.\n\n### Upload the voice demo clip if necessary\n\nIf you are contributing a new voice or have updated an existing voice\nsuch that it has changed the way it sounds, synthesize the\nlanguage-specific demo text and upload the clip. The audio file must be in either Ogg Vorbis or MP3 format.\n\nIf you are contributing a language, please help us extend this table with a demo message for your language. Just translate the English message.\n\nLanguage | Text\n---|---\ncs | Tento hlas není nainstalován. Posloucháte předem nahraný vzorek.\nen | This voice is not installed. You are listening to a pre-recorded sample.\neo | Ĉi tiu voĉo ne estas instalita. Vi aŭskultas antaŭregistritan ekzemplon.\nes | Esta voz no está instalada. Estás escuchando una muestra pregrabada.\nhr | Ovaj glas nije instaliran. Vi slušate prethodno snimljen primjer.\nka | ეს ხმა არ არის დაინსტალირებული. თქვენ უსმენთ წინასწარ ჩაწერილ მაგალითს.\nky | Бул үн орнотулган эмес. Сиз алдын ала жазылган үндү угуп жатасыз.\nmk | Овој глас не е инсталиран. Слушате претходно снимен примерок.\npl | Ten głos nie jest zainstalowany. Słuchasz jego gotowej próbki.\npt | Esta voz não está instalada. Você está escutando uma amostra pré-gravada.\nru | Этот голос не установлен. Вы слушаете заранее записанный пример.\nsk | Tento hlas nie je ešte nainštalovaný. Počúvate ukážkovú nahrávku slovenského hlasu.\nsq | Ky zë nuk është i instaluar. Po dëgjoni një shembull të regjistruar paraprakisht.\nsr| Ovaj glas nije instaliran. Vi slušate prethodno snimljen primer.\ntt | Бу тавыш җиһазга урнаштырылмаган. Сез алдан яздырылган мисалны тыңлыйсыз.\nuk | Цей голос не встановлено. Ви слухаєте попередньо записаний приклад.\nuz | ушбу овоз ўрнатилмаган, сиз аввалдан тайёрланган намунани тинглаяпсиз.\n\n### Create or update the json file describing your package.\n\nSee the existing files in the src directory for examples.\n\nSome notes on the expected formats of values:\n\n* Two-letter language codes are ISO 639-1 codes.\n* Three-letter language codes are ISO 639-3 codes.\n* Country codes are ISO 3166 codes.\n* MD5 hashes are encoded as Base64. For example, you could use the\n  following command to generate the hash, if you have openssl and\n  base64 programs installed on your Linux system:\n  ```\n  openssl md5 -binary \u003cYourPackageFile\u003e | base64\n  ```\n  Also, you can use the md5_hash Python script from the packages directory.\n  To use the md5_hash Python script, you need to specify a directory containing language and voice packages, and to specify a file name where MD5 hashes will be stored, (EG)\n  ```\n  md5_hash \u003c/home/packages\u003e \u003c/home/md5_hashes.txt\u003e\n  ``````\n  From Windows:\n  ```\n  python md5_hash \u003cD:\\packages\u003e \u003cD:\\md5_hashes.txt\u003e\n  ``````\n\n### Check your changes\n\n#### Simple automated check\n\nLet's imagine your two-letter language code is xy. And, if you have\ncreated or updated a voice, you've saved the information about it in src/languages/xy/voices/myvoice.json.\n\nNow let's run the check.\n\nIf you are publishing a language, run:\n```./check xy```\n\nIf you are publishing a voice, run:\n```./check xy myvoice```\n\nThe script will do some basic checks, including downloading your\npackage and verifying that the hash matches.\n\n#### Runtime testing\n\nBefore your contribution is made available to the Alpha testers, you\nmust test it on an Android device and confirm that it works as\nexpected and causes no major issues, such as an RHVoice crash.\n\n1. Build the package directory:\n   ```./build```\n2. Upload the packages-dev.json, created by the previous command, somewhere.\n3. Setup the build environment to build the RHVoice app.\n4. Create or edit ~/.gradle/gradle.properties, configuring the url to\n   download the package directory:\n   ```\n   RHVoice.devPkgDirUrl=\u003curl\u003e\n   ```\n5. Build the development flavour of the app:\n   ```./gradlew assembleDevDebug```\n6. Install and test the app you have built, on an Android device with your voice.\n\n### Make a pull request\n\nMake a pull request to the main branch. When it's merged, the\nmaintainer will also upload the development package directory.\nMake a final test of the development app build with the url pointing\nto that directory. The build process is the same, except the\nRHVoice.devPkgDirUrl property must not be set.\n\n### Alpha testing\n\nWhen you are sure your update is ready for testing by users, leave a\ncomment confirming it in the pull request.\n\nWhen the update is available in the Alpha version of the app, there\nwill be a comment about it in the same pull request.\n\nThe testing is done as a closed test on Google Play, so you need to\nfind testers for your voice and provide us with their gmail addresses\nin an email to rhvoice@rhvoice.org.\n\nWhen we register your testers, they will have to use the special link we will\nsend to you to confirm to Google that they really want to become testers.\n\nGather feedback from the testers. If necessary and possible, fix the\nissues and publish the fixes.\n\n### Publishing to production\n\nWhen your update is ready for use by the general public, open an\nissue in this repository requesting the publication. Your package will be made available to the stable version of the app.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhvoice%2Fpackages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhvoice%2Fpackages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhvoice%2Fpackages/lists"}