DeepSpeech/native_client/python/__init__.py
2019-09-09 13:47:26 +02:00

62 lines
2.2 KiB
Python

import os
import platform
#The API is not snake case which triggers linter errors
#pylint: disable=invalid-name
# On Windows, we can't rely on RPATH being set to $ORIGIN/lib/ or on
# @loader_path/lib but we can change the PATH to include the proper directory
# for the dynamic linker
if platform.system().lower() == "windows":
dslib_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
os.environ['PATH'] = dslib_path + ';' + os.environ['PATH']
import deepspeech
# rename for backwards compatibility
from deepspeech.impl import PrintVersions as printVersions
from deepspeech.impl import FreeStream as freeStream
class Model(object):
def __init__(self, *args, **kwargs):
# make sure the attribute is there if CreateModel fails
self._impl = None
status, impl = deepspeech.impl.CreateModel(*args, **kwargs)
if status != 0:
raise RuntimeError("CreateModel failed with error code {}".format(status))
self._impl = impl
def __del__(self):
if self._impl:
deepspeech.impl.FreeModel(self._impl)
self._impl = None
def enableDecoderWithLM(self, *args, **kwargs):
return deepspeech.impl.EnableDecoderWithLM(self._impl, *args, **kwargs)
def stt(self, *args, **kwargs):
return deepspeech.impl.SpeechToText(self._impl, *args, **kwargs)
def sttWithMetadata(self, *args, **kwargs):
return deepspeech.impl.SpeechToTextWithMetadata(self._impl, *args, **kwargs)
def createStream(self, sample_rate=16000):
status, ctx = deepspeech.impl.CreateStream(self._impl,
aSampleRate=sample_rate)
if status != 0:
raise RuntimeError("CreateStream failed with error code {}".format(status))
return ctx
def feedAudioContent(self, *args, **kwargs):
deepspeech.impl.FeedAudioContent(*args, **kwargs)
def intermediateDecode(self, *args, **kwargs):
return deepspeech.impl.IntermediateDecode(*args, **kwargs)
def finishStream(self, *args, **kwargs):
return deepspeech.impl.FinishStream(*args, **kwargs)
def finishStreamWithMetadata(self, *args, **kwargs):
return deepspeech.impl.FinishStreamWithMetadata(*args, **kwargs)