Compare commits
5 Commits
b01f367a45
...
77e743482a
Author | SHA1 | Date |
---|---|---|
|
77e743482a | |
|
439d49d16d | |
|
4338423833 | |
|
d448db6dc3 | |
|
7af678159c |
|
@ -1,17 +1,15 @@
|
||||||
Python bindings for whisper.cpp
|
Python bindings for whisper.cpp
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
<a href="https://www.buymeacoffee.com/lukeFxC" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
`pip install git+https://github.com/stlukey/whispercpp.py`
|
`pip install git+https://git.brz9.dev/ed/whispercpp.py`
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from whispercpp import Whisper
|
from whispercpp import Whisper
|
||||||
|
|
||||||
w = Whisper('tiny')
|
w = Whisper('tiny')
|
||||||
|
|
||||||
result = w.transcribe("myfile.mp3")
|
result = w.transcribe("myfile.mp3", lang="en")
|
||||||
text = w.extract_text(result)
|
text = w.extract_text(result)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,12 @@ cimport numpy as cnp
|
||||||
cdef int SAMPLE_RATE = 16000
|
cdef int SAMPLE_RATE = 16000
|
||||||
cdef char* TEST_FILE = 'test.wav'
|
cdef char* TEST_FILE = 'test.wav'
|
||||||
cdef char* DEFAULT_MODEL = 'tiny'
|
cdef char* DEFAULT_MODEL = 'tiny'
|
||||||
cdef char* LANGUAGE = b'en'
|
|
||||||
cdef int N_THREADS = os.cpu_count()
|
cdef int N_THREADS = os.cpu_count()
|
||||||
|
|
||||||
MODELS = {
|
MODELS = {
|
||||||
'ggml-tiny.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin',
|
'ggml-tiny.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin',
|
||||||
'ggml-base.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin',
|
'ggml-base.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin',
|
||||||
'ggml-small.bin': 'hhttps://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin',
|
'ggml-small.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin',
|
||||||
'ggml-medium.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin',
|
'ggml-medium.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin',
|
||||||
'ggml-large.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large.bin',
|
'ggml-large.bin': 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large.bin',
|
||||||
}
|
}
|
||||||
|
@ -68,14 +67,14 @@ cdef cnp.ndarray[cnp.float32_t, ndim=1, mode="c"] load_audio(bytes file, int sr
|
||||||
|
|
||||||
return frames
|
return frames
|
||||||
|
|
||||||
cdef whisper_full_params default_params() nogil:
|
cdef whisper_full_params default_params(char* language) nogil:
|
||||||
cdef whisper_full_params params = whisper_full_default_params(
|
cdef whisper_full_params params = whisper_full_default_params(
|
||||||
whisper_sampling_strategy.WHISPER_SAMPLING_GREEDY
|
whisper_sampling_strategy.WHISPER_SAMPLING_GREEDY
|
||||||
)
|
)
|
||||||
params.print_realtime = True
|
params.print_realtime = True
|
||||||
params.print_progress = True
|
params.print_progress = True
|
||||||
params.translate = False
|
params.translate = False
|
||||||
params.language = <const char *> LANGUAGE
|
params.language = <const char *>language
|
||||||
n_threads = N_THREADS
|
n_threads = N_THREADS
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
@ -96,14 +95,13 @@ cdef class Whisper:
|
||||||
else:
|
else:
|
||||||
self.ctx = whisper_init_from_file(model_b)
|
self.ctx = whisper_init_from_file(model_b)
|
||||||
|
|
||||||
self.params = default_params()
|
|
||||||
whisper_print_system_info()
|
whisper_print_system_info()
|
||||||
|
|
||||||
|
|
||||||
def __dealloc__(self):
|
def __dealloc__(self):
|
||||||
whisper_free(self.ctx)
|
whisper_free(self.ctx)
|
||||||
|
|
||||||
def transcribe(self, filename=TEST_FILE):
|
def transcribe(self, filename=TEST_FILE, lang="auto"):
|
||||||
print("Loading data..")
|
print("Loading data..")
|
||||||
if (type(filename) == np.ndarray) :
|
if (type(filename) == np.ndarray) :
|
||||||
temp = filename
|
temp = filename
|
||||||
|
@ -115,9 +113,14 @@ cdef class Whisper:
|
||||||
|
|
||||||
|
|
||||||
cdef cnp.ndarray[cnp.float32_t, ndim=1, mode="c"] frames = temp
|
cdef cnp.ndarray[cnp.float32_t, ndim=1, mode="c"] frames = temp
|
||||||
|
language_bytes = str(lang).encode("utf-8")
|
||||||
|
cdef char* c_string = language_bytes # Convert bytes to char*
|
||||||
|
|
||||||
|
params = default_params(c_string)
|
||||||
|
|
||||||
print("Transcribing..")
|
print("Transcribing..")
|
||||||
return whisper_full(self.ctx, self.params, &frames[0], len(frames))
|
|
||||||
|
return whisper_full(self.ctx, params, &frames[0], len(frames))
|
||||||
|
|
||||||
def extract_text(self, int res):
|
def extract_text(self, int res):
|
||||||
print("Extracting text...")
|
print("Extracting text...")
|
||||||
|
|
Loading…
Reference in New Issue