--- language: - vi - vi license: bsd-3-clause base_model: facebook/mbart-large-50 tags: - generated_from_trainer metrics: - bleu model-index: - name: PhoTextNormalization results: - task: name: Translation type: translation metrics: - name: Bleu type: bleu value: 88.8267 --- # PhoTextNormalization: Text normalization model for Vietnamese PhoTextNormalization converts Vietnamese text from written to spoken form. For example, "Một tháng có 30 hoặc 31 ngày, riêng tháng 2 có 28 ngày." will be converted to "một tháng có ba mươi hoặc ba mươi mốt ngày, riêng tháng hai có hai tám ngày." Details of the training can be found in our ACL 2025 paper, ["Zero-Shot Text-to-Speech for Vietnamese"](https://arxiv.org/abs/2506.01322). If you use this model in your work, please cite the paper: ```bibtex @inproceedings{vu2025zeroshottexttospeechvietnamese, title={Zero-Shot Text-to-Speech for Vietnamese}, author={Thi Vu and Linh The Nguyen and Dat Quoc Nguyen}, year={2025}, booktitle={Proceedings of ACL}, } ``` ## Usage ```python import torch from transformers import AutoModelForSeq2SeqLM, AutoTokenizer device = "cuda:0" if torch.cuda.is_available() else "cpu" model_name = "thivux/PhoTextNormalization" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSeq2SeqLM.from_pretrained(model_name).to(device) text = 'Một tháng có 30 hoặc 31 ngày, riêng tháng 2 có 28 ngày.' inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=1024).to(device) # Generate translations with torch.no_grad(): translated_tokens = model.generate( **inputs, max_length=1024, num_beams=5) # Decode decoded_outputs = [tokenizer.decode(output, skip_special_tokens=True) for output in translated_tokens] # decoded_outputs: ['một tháng có ba mươi hoặc ba mươi mốt ngày, riêng tháng hai có hai tám ngày.'] print(f'decoded_outputs: {decoded_outputs}') ```