|
--- |
|
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](https://arxiv.org/abs/2506.01322): |
|
|
|
```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}') |
|
``` |
|
|
|
|