create api module for opendbm speech api
This commit is contained in:
73
opendbm/api_lib/speech/api.py
Normal file
73
opendbm/api_lib/speech/api.py
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
|
from opendbm.api_lib import DEEEPSPEECH_URL, DEEPSPEECH_MODELS, OPENDBM_DATA, AudioModel
|
||||||
|
from opendbm.api_lib.util import check_file, check_isfile, download_url
|
||||||
|
|
||||||
|
from ._speech_features import SpeechFeature
|
||||||
|
from ._transcribe import Transcribe
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
|
class Speech(AudioModel):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self._transcribe = Transcribe()
|
||||||
|
self._speech_features = SpeechFeature()
|
||||||
|
self._models = {
|
||||||
|
"transcribe": self._transcribe,
|
||||||
|
"speech_features": self._speech_features,
|
||||||
|
}
|
||||||
|
|
||||||
|
def fit(self, path):
|
||||||
|
"""Fit a file in filepath to Deepspeech Model.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
path : string,
|
||||||
|
File Path of Video/Sound file format.
|
||||||
|
"""
|
||||||
|
check_isfile(path)
|
||||||
|
self._check_model_exists()
|
||||||
|
path, is_wav = check_file(path)
|
||||||
|
for v in self._models.values():
|
||||||
|
v._df = v._fit_transform(path)
|
||||||
|
if not is_wav:
|
||||||
|
os.remove(path)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _check_model_exists():
|
||||||
|
"""
|
||||||
|
Check if deepspeech model is exists. if not, download to OPENDBM Directory.
|
||||||
|
"""
|
||||||
|
if not OPENDBM_DATA.exists():
|
||||||
|
os.mkdir(OPENDBM_DATA)
|
||||||
|
for dm in DEEPSPEECH_MODELS:
|
||||||
|
pt = OPENDBM_DATA / dm
|
||||||
|
if not pt.exists():
|
||||||
|
logger.info(
|
||||||
|
f"{dm} not exists. Automatically downloading to {OPENDBM_DATA}/"
|
||||||
|
)
|
||||||
|
download_url(f"{DEEEPSPEECH_URL}/{dm}", pt)
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
def get_transcribe(self):
|
||||||
|
"""
|
||||||
|
Get the model object of Transcribe
|
||||||
|
Returns:
|
||||||
|
self: object
|
||||||
|
Model Object
|
||||||
|
"""
|
||||||
|
return self._transcribe
|
||||||
|
|
||||||
|
def get_speech_features(self):
|
||||||
|
"""
|
||||||
|
Get the model object of Speech Features
|
||||||
|
Returns:
|
||||||
|
self: object
|
||||||
|
Model Object
|
||||||
|
"""
|
||||||
|
return self._speech_features
|
||||||
Reference in New Issue
Block a user