TujiaNLP
Preserving the endangered Northern Tujia language with AI.
Tujia is now spoken mainly by elderly native speakers. This open-source project aims to digitise the language record and build Tujia speech, translation and dialogue models.
Goals
- Collect field recordings and build a consistently annotated bilingual corpus.
- Train Tujia ASR (speech recognition) and TTS (speech synthesis).
- Build Tujia ↔ Chinese machine translation.
- Assemble a Tujia dialogue pipeline, modular first, LLM fine-tuning later.
- Ship lightweight learning tools for language revitalisation.
Scope
Northern Tujia only (Longshan / Yongshun / Laifeng area, Miaotan standard). Southern Tujia is deliberately excluded for now, to avoid mixing dialects in training.
Orthography
The project follows the Yedshu–Peng (1984) Tujia romanisation ("Ye"). Other transcriptions are not used as the working standard.
Two IPA spellings appear in source materials for the same sounds:
| Earlier spelling | Current standard |
|---|---|
aŋ eŋ iŋ oŋ, ʐ, iu |
ã ẽ ĩ ũ, z, iou |
The tujia_nlp package normalises between them: input accepts either spelling, output is
always the current convention.
Ecosystem
| Repository | Role |
|---|---|
| TujiaNLP (this) | Corpus terms, collection standards, orthography, licensing |
| tujia-asr | Acoustic model releases: syllable-level CTC |
| tujia-tts | Speech synthesis releases |
| tujia-llm | LoRA adapters and the evaluation protocol |
Where the work happens:
audio ──► tujia-asr acoustic model, syllable-level output
text ──► tujia_nlp IPA ↔ Ye, tone notation ──► tts / llm data, annotations
Rules of thumb:
- This repository owns language resources and contracts: the syllable table, the orthography rules, the corpus terms, and the dictionary entry/manifest schemas.
- tujia-asr / tujia-tts / tujia-llm own model releases. Training code lives in private
*-lib/*-labrepositories.
Installation
pip install tujia-nlp
Requires Python 3.9+. No third-party dependencies.
Usage
from tujia_nlp import format_syllable, normalize_shape, to_ipa, to_ye
to_ye("la35") # "laf"
to_ye("kaŋ35") # "gangf" legacy input accepted
to_ipa("gangf") # "kã35" output in the current convention
format_syllable("la35", "ipa") # "la³⁵"
normalize_shape("ʐuo") # "zuo"
Notation rules:
to_ipaalways emits the current convention: nasalised vowelsã ẽ ĩ ũ,z,iou.to_yeaccepts both: legacyaŋ eŋ iŋ oŋ,ʐ,iuare folded before lookup.- A few contrasts are not distinguished by the Ye scheme (
ɿ/i,ə/ɤ), so conversion is one-way:to_yecan produce Ye,to_ipacannot recover them.
The syllable table covers 291 Northern Tujia syllables, 227 attested in corpus material and 64 derived by rule.
Beyond IPA ↔ Ye, three helpers are available as submodules:
from tujia_nlp import phone_norm, syllable, zh_sound
syllable.split_head("a⁵⁵ji²¹") # [("a", 55), ("ji", 21)]
syllable.tone_stats(["la³⁵"]) # tone usage per shape
phone_norm.canon("d") # ["t"] voiced stops fold onto voiceless
zh_sound.pinyin_to_ipa("ni3") # ("ni", 21)
zh_sound.text_to_syllables accepts hanzi only when the optional pypinyin package is
installed (pip install "tujia-nlp[zh]"); plain pinyin input needs nothing extra.
Data coverage
The published package contains only the syllable table. Recordings, transcripts and dictionary entries are not distributed.
Repository layout
src/tujia_nlp/ the package: tones.py, ye.py, syllable.py, phone_norm.py, zh_sound.py
schema/ dictionary entry and pack manifest contracts (JSON Schema)
tests/ unit tests (pytest)
docs/ annotation standards and resources
dataset/ corpus metadata and fetch scripts (raw data is not committed)
tools/ early conversion scripts, superseded by the package
Zenodo datasets
Two public North Tujia text corpora are archived on Zenodo. Only fetch scripts and checksums live in this repository; the original files are not redistributed.
- V1 (DOI: 10.5281/zenodo.4446698) — incomplete, contains annotation errors, for provenance only, not for training.
- V2 (DOI: 10.5281/zenodo.4447924) — the recommended source for translation, LLM, ASR and TTS work; includes the orthography mapping, vocabulary, textbook sentences, folk narratives and greetings.
The upstream record is marked Other (Public Domain), which is not a standard licence. This
project does not redistribute the files. Standardised data derived by this project is
released under CC-BY 4.0, covering only the new conversion and annotation work.
Citation
Zhou, Y., & Hill, N. W. (2021). A collection of North Tujia (Bifzivsar) vocabulary and textual passages for use in NLP (Version 2) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.4447924
See DATASET_LICENSE.md for the full constraints.
Contributing
- Tujia speakers: field recordings, semantic proofreading, pronunciation checks.
- NLP developers: model fine-tuning, code review, front-end tools.
- Linguists: vocabulary expansion and grammatical notes.
Ethics
Every field recording requires prior informed consent. Speaker privacy must be protected and recorded material must not be used commercially without permission.
License
- Source code: MIT (see
LICENSE). - Third-party corpora: rights remain with the original authors; not licensed or redistributed here.
- Data produced by this project: CC-BY 4.0, excluding the original word lists.
- Field recordings: governed by each speaker's individual consent form.
Roadmap
- Repository bootstrapped
-
tujia_nlporthography package (IPA ↔ Ye, tone notation) - Dictionary entry and pack manifest schemas
- Annotation standard finalised
- Base vocabulary assembled
- Field recording collection started
- Tujia ASR fine-tuning
- Tujia TTS training
- Tujia ↔ Chinese translation model
- Dialogue web demo
- LLM SFT (long-term)
Metadata
Release files for tujia-nlp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| tujia_nlp-0.2.0.tar.gz | 28.1 kB | Without provenance | Details for tujia_nlp-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| tujia_nlp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for tujia_nlp-0.2.0-py3-none-any.whl |
Total release size: 46.9 kB
Release files / tujia_nlp-0.2.0.tar.gz
| Download URL | tujia_nlp-0.2.0.tar.gz |
|---|---|
| Size | 28.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8d9c15d400e5c907d1d2c469e9388d4c51b558d5faa64b97d472d4e039f69b26
|
|
BLAKE2b-256 checksum How to use checksums |
401c33bb3b44c9a7059784dea75ec8f88f4ee391919f1e98f931d3b2a6979706
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / tujia_nlp-0.2.0-py3-none-any.whl
| Download URL | tujia_nlp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b43a3a754aba3c8d4b172d3239be32e54ce808fc8d8b3ea7a48aec6313ef64f5
|
|
BLAKE2b-256 checksum How to use checksums |
489dd1e7287fc2465d4dee3e1c8724ee20db93da136ee306492261b2330128a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for tujia-nlp 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.