Guillaume Wenzek 145d3ab931 Decrease mem usage and add `--mem` to allow more memory (#294) há 1 ano atrás
..
ci 71886b2e43 Seamless November release. (#221) há 1 ano atrás
cmake 71886b2e43 Seamless November release. (#221) há 1 ano atrás
examples 145d3ab931 Decrease mem usage and add `--mem` to allow more memory (#294) há 1 ano atrás
include 07f9a736fe allocr for encoder (#256) há 1 ano atrás
scripts 71886b2e43 Seamless November release. (#221) há 1 ano atrás
src a21fa965ea No alloc (#250) há 1 ano atrás
tests 71886b2e43 Seamless November release. (#221) há 1 ano atrás
CMakeLists.txt 71886b2e43 Seamless November release. (#221) há 1 ano atrás
LICENSE 71886b2e43 Seamless November release. (#221) há 1 ano atrás
Makefile a21fa965ea No alloc (#250) há 1 ano atrás
README.md 54dfed130c ggml : update cmake to build on macOS (#235) há 1 ano atrás
build.zig 71886b2e43 Seamless November release. (#221) há 1 ano atrás
ctypes_utils.py 71886b2e43 Seamless November release. (#221) há 1 ano atrás
ggml.pc.in 71886b2e43 Seamless November release. (#221) há 1 ano atrás
ggml.py 145d3ab931 Decrease mem usage and add `--mem` to allow more memory (#294) há 1 ano atrás
ggml_convert.py ac6b874c43 layer_filter há 1 ano atrás
requirements.txt 711707abb0 Update ggml requirements.txt (#226) há 1 ano atrás
test_ggml_integration.py 71886b2e43 Seamless November release. (#221) há 1 ano atrás
test_unity_cpp.py 145d3ab931 Decrease mem usage and add `--mem` to allow more memory (#294) há 1 ano atrás
third_party_ggml.py 71886b2e43 Seamless November release. (#221) há 1 ano atrás

README.md

unity.cpp

Introduction

GGML is an open source library in C to enable large model inference on various hardware platforms. We implemented unity.cpp in ggml. Now it supports SeamlessM4T model for X2T tasks - Speech-to-text translation (S2TT), Acoustic speech recognition (ASR), Text-to-text translation (T2TT).

The project is still active in development. Contributions are welcome!

Build

To build the interactive console for S2TT & ASR,


cd seamless_communication/ggml
mkdir build; cd build
cmake \
    -DGGML_OPENBLAS=ON \
    -DBUILD_SHARED_LIBS=On \
	  -DCMAKE_BUILD_TYPE=Release \
	  -DCMAKE_CXX_FLAGS="-g2 -fno-omit-frame-pointer" \
    ..
make -j4 unity # Interactive Console

Note that -DGGML_OPENBLAS=ON is not necessary on macOS.

For more build commands see Makefile.

CLI usage

Command to launch an interactive console for S2TT & ASR, note that the model already includes vocabulary needed to detokenize.

OPENBLAS_NUM_THREADS=8 ./bin/unity --model seamlessM4T_medium.ggml

In the console, enter the path of local waveform file and target language, separated by space. Note that the first run would include some “warm up” time so could be slow.

Converted ggml models could be downloaded from |SeamlessM4T_large | SeamlessM4T_medium | |-------- | -------- | | model | model |

Fairseq2 model conversion

Models from fairseq2 checkpoints could be converted to ggml automatically with ggml_convert.py.

python ggml_convert.py -m MODEL_NAME

where MODEL_NAME corresponds to asset cards in fairseq2 / seamless_communication, e.g. seamlessM4T_medium, seamlessM4T_large

Python bindings

We also utilize ggml python bindings for better dev experience. For examples of running unity.cpp in python, refer to tests in test_unity_cpp.py.

[Optional]Dependencies

OpenBLAS

We strongly suggest building with OpenBLAS, as we've seen 8x speedup on test machine.

libsndfile

This is needed only for the console to load waveform, but not the library.