Skip to content

zhujun1980/whispercpp_py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

whispercpp_py

Python binding for whisper.cpp

Install

Run

# libwhisper.so in system path
python test_lib.py

# libwhisper.so not in system path
LIBWHISPER_BASE_PATH=<Your libwhisper.so path> python test_lib.py

Examples

Wave

from ctypes import *
import whispercpp_py

model = "<Your model path>"
whisper = whispercpp_py.Whisper(model)

params = whispercpp_py.WhisperParams(whispercpp_py.WHISPER_SAMPLING_BEAM_SEARCH)
params.params.language = create_string_buffer(b"zh").value
params.params.print_special = False
params.params.print_progress = False
params.params.print_realtime = False
params.params.print_timestamps = False

wavfile = "<wave file>"
ret = whisper.transcript_wave_file(wavfile, params)
results = whisper.get_n_segments_simple()
[print(result.decode()) for result in results]

OGG

from ctypes import *
import whispercpp_py
import base64
import numpy as np

import ffmpeg

model = "<Your model path>"
whisper = whispercpp_py.Whisper(model)

params = whispercpp_py.WhisperParams(whispercpp_py.WHISPER_SAMPLING_BEAM_SEARCH)
params.params.language = create_string_buffer(b"zh").value
params.params.print_special = False
params.params.print_progress = False
params.params.print_realtime = False
params.params.print_timestamps = False

oggfile = "<ogg file>"
mime = "audio/webm;codecs=opus"
with open(oggfile, "rb") as fp:
    content = fp.read()
    data_uri = "data:{};base64,{}".format(mime, base64.standard_b64encode(content).decode())
    _out, _ = (ffmpeg
                .input(data_uri, loglevel="0")
                .output("pipe:", format='s16le', acodec='pcm_s16le', ac=1, ar='16k', loglevel="0")
                .overwrite_output()
                .run(capture_stdout=True)
    )
    sample = (
        np
        .frombuffer(_out, np.int16)
        .flatten()
        .astype(np.float32)
        / 32768.0
    )
    status = whisper.transcript_ndarray(sample, params)
    results = whisper.get_n_segments_simple()
    [print(result.decode()) for result in results]

About

Python binding for whisper.cpp

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages