Skip to main content

A modern Pythonic implementation of Avro Phonetic.

Project description

avro.py

A modern Pythonic implementation of the popular Bengali phonetic-typing software Avro Phonetic.

Downloads Python Version License



⚡ Overview

avro.py provides a fully fledged, batteries-included text parser which can parse, reverse and even convert English Roman script into its phonetic equivalent (unicode) of Bengali. At its core, it implements an extensively modified version of the Avro Phonetic Dictionary Search Library by Mehdi Hasan Khan.

✨ Inspirations

This package is inspired from Rifat Nabi's jsAvroPhonetic library and derives from Kaustav Das Modak's pyAvroPhonetic.


🔨 Installation

This package requires Python 3.9 or higher to be used inside your development environment.

# Install or upgrade.
pip install -U avro.py

Usage Guide

You can also check the examples directory for checking this whole snippet in action, as well as other use cases.

Parsing to Bengali

For a single block of text, use avro.parse():

# Import the package.
import avro

# Our dummy text.
dummy = 'ami banglay gan gai.'

# Parse a single string.
parsed = avro.parse(dummy)
print(parsed)  # আমি বাংলায় গান গাই।

If you have multiple strings, use avro.parse_iter() to get a list of parsed results:

texts = ['ami banglay gan gai.', 'tumi kothay jao?']
parsed_list = avro.parse_iter(texts)
print(parsed_list)  # ['আমি বাংলায় গান গাই।', 'তুমি কোথায় যাও?']

Alternatively, set the bijoy flag to True for receiving the output in the Bijoy Keyboard format.

bijoy_output = avro.parse(dummy, bijoy=True)
# Output: Avwg evsjvh় Mvb MvB।

Conversions

To convert a single Bengali string (Avro/Unicode) to the Bijoy Keyboard format:

bijoy_text = avro.to_bijoy("আমি বাংলায় গান গাই।")
print(bijoy_text)  # Avwg evsjvh় Mvb MvB।

To convert multiple strings at once, use avro.to_bijoy_iter():

bijoy_list = avro.to_bijoy_iter(['আমি বাংলায় গান গাই।', 'তুমি কোথায় যাও?'])
print(bijoy_list)  # ['Avwg evsjvh় Mvb MvB।', 'tvmf wkrwb‡¶ jd?']

On the contrary, to convert a single Bijoy string back to Unicode Bengali:

unicode_text = avro.to_unicode("Avwg evsjvh় Mvb MvB।")
print(unicode_text)  # আমি বাংলায় গান গাই।

For multiple strings, use avro.to_unicode_iter():

unicode_list = avro.to_unicode_iter(['Avwg evsjvh় Mvb MvB।', 'tvmf wkrwb‡¶ jd?'])
print(unicode_list)  # ['আমি বাংলায় গান গাই।', 'তুমি কোথায় যাও?']

Reversing Back

To reverse a single Unicode Bengali string back to English Roman script:

reversed_text = avro.reverse("আমি বাংলায় গান গাই।")
print(reversed_text)  # ami banglay gan gai.

[!WARNING] The reverse functions are by-nature lossy and might not output the correct replacement for some letters in favor of readability sometimes.

To reverse multiple strings at once, use avro.reverse_iter():

rev_list = avro.reverse_iter(['আমি বাংলায় গান গাই।', 'তুমি কোথায় যাও?'])
print(rev_list)  # ['ami banglay gan gai.', 'tumi kothay jao?']

Remapped Exceptions

avro.py also contains a built-in collection of words which are pre-baked to be passed into your text without any processing. These words can be accessed through both the parse and reverse functions, so that you do not have to care for phonetics:

[!NOTE] Remapping is a work-in-progress feature. Some words may still be missing.

avro.parse("ami Microsoft e kaj kori")
# আমি মাইক্রোসফট এ কাজ করি

Asynchronous Operations

All of the functions above, when suffixed with _async, provide their asynchronous counterparts which have a slight performance bump in certain use cases. Please see the async examples to find out more about their usage.


🛠️ Contributing

:octocat: "Fork -> Do your changes -> Send a Pull Request, it's that easy!"

This project is based on the uv package manager by Astral. In order to automatically update and set up the environment, you can run the following command:

# (Optional) Install recommended Python version: (also sets up the virtual environment)
$ uv python install && uv venv
$ source .venv/bin/activate

# Install the project:
$ uv sync --all-extras --dev

# Build the project:
$ uv build --verbose

In order to run the tests, you can use the following command:

# Run unit tests:
$ uv run pytest .

❤️ Acknowledgements

avro.py would not be possible without the awesome minds behind the original Avro Keyboard software:

And, some awesome people:


License

This project has been licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

avro_py-2025.8.11.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

avro_py-2025.8.11-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file avro_py-2025.8.11.tar.gz.

File metadata

  • Download URL: avro_py-2025.8.11.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.8

File hashes

Hashes for avro_py-2025.8.11.tar.gz
Algorithm Hash digest
SHA256 f55064dc3bc0ac4b63ca14cf7e7a1027fbc645fd14ccfb3c751f91d8d86ba132
MD5 33fd23d0d352e4cc3e3dc582e789b10a
BLAKE2b-256 a269e33c9e0cd30083b83e6280aa64ea2b7677df05194b50c823d227223339b1

See more details on using hashes here.

File details

Details for the file avro_py-2025.8.11-py3-none-any.whl.

File metadata

File hashes

Hashes for avro_py-2025.8.11-py3-none-any.whl
Algorithm Hash digest
SHA256 416cc7768eb8b814ba95ae07d5fa01e59033ca9fbd20b5705aa0910cad719b19
MD5 8f49342bd3b10389a81ff882612c791d
BLAKE2b-256 64e2f8c3205814c5764a0bc1140cddb8200a339dffd34b5f51daa218c2ede7b6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page