EasyMMS
A simple Python package to easily use Meta's Massively Multilingual Speech (MMS) project.
The current MMS code is using subprocess to call another Python script, which is not very convenient to use, and might lead to several issues. This package is created to address those problems and to wrap up the project in an API to easily integrate it with other projects.
Installation
- You will need ffmpeg for audio processing
- Install
easymmsfrom Pypi
pip install easymms
or from source
pip install git+https://github.com/abdeladim-s/easymms
- If you want to use the
Alignmentmodel:
- you will need
perlto use uroman. Check the perl website for installation instructions on different platforms. - You will need a nightly version of
torchaudio:
pip install -U --pre torchaudio --index-url https://download.pytorch.org/whl/nightly/cu118
- You might need sox as well.
Fairseqhas not included theMMSproject yet in the released PYPI version, so until the next release, you will need to installfairseqfrom source:
pip uninstall fairseq && pip install git+https://github.com/facebookresearch/fairseq
Quickstart
⚠️ There is an issue with fairseq when running the code in interactive environments like Jupyter notebooks.
Please use normal Python files or use the colab notebook provided above.
ASR
You will need first to download the model weights, you can find and download all the supported models from here.
from easymms.models.asr import ASRModel
asr = ASRModel(model='/path/to/mms/model')
files = ['path/to/media_file_1', 'path/to/media_file_2']
transcriptions = asr.transcribe(files, lang='eng', align=False)
for i, transcription in enumerate(transcriptions):
print(f">>> file {files[i]}")
print(transcription)
ASR with Alignment
from easymms.models.asr import ASRModel
asr = ASRModel(model='/path/to/mms/model')
files = ['path/to/media_file_1', 'path/to/media_file_2']
transcriptions = asr.transcribe(files, lang='eng', align=True)
for i, transcription in enumerate(transcriptions):
print(f">>> file {files[i]}")
for segment in transcription:
print(f"{segment['start_time']} -> {segment['end_time']}: {segment['text']}")
print("----")
Alignment model only
from easymms.models.alignment import AlignmentModel
align_model = AlignmentModel()
transcriptions = align_model.align('path/to/wav_file.wav',
transcript=["segment 1", "segment 2"],
lang='eng')
for transcription in transcriptions:
for segment in transcription:
print(f"{segment['start_time']} -> {segment['end_time']}: {segment['text']}")
TTS
from easymms.models.tts import TTSModel
tts = TTSModel('eng')
res = tts.synthesize("This is a simple example")
tts.save(res)
LID
Coming Soon
API reference
You can check the API reference documentation for more details.
License
Since the models are released under the CC-BY-NC 4.0 license. This project is following the same License.
Disclaimer & Credits
This project is not endorsed or certified by Meta AI and is just simplifying the use of the MMS project.
All credit goes to the authors and to Meta for open sourcing the models.
Please check their paper Scaling Speech Technology to 1000+ languages and their blog post.
Metadata
Release files for easymms 0.1.6
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 |
|---|---|---|---|---|
| easymms-0.1.6.tar.gz | 20.5 kB | Without provenance | Details for easymms-0.1.6.tar.gz |
Release files / easymms-0.1.6.tar.gz
| Download URL | easymms-0.1.6.tar.gz |
|---|---|
| Size | 20.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a6115ef5a47348a6c96c6787d49d4596317d71c0608bf4c669164baaa2e36141
|
|
BLAKE2b-256 checksum How to use checksums |
f2c7ac6dbf524746d657d9fd3f7bbcf34e5f16d34b0573f3a30db18610857812
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.11.3
|
Security for easymms 0.1.6
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.