nvidia-asr/app/asr.py
2025-05-21 15:00:53 +00:00

42 lines
1.0 KiB
Python

from ahserver.webapp import webapp
from ahserver.serverenv import ServerEnv
from ahserver.filestorage import FileStorage
from appPublic.log import debug,exception, error
from appPublic.worker import awiatify
from appPublic.jsonConfig import getConfig
import nemo.collections.asr as nemo_asr
claas NvidiaASR:
def __init__(self):
config = getConfig()
self.models = {}
device = torch.device(config.device)
for lang, model_path in config.asr_models:
model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(model_path)
model.to(device)
self.models[lang] = model
def _generate(self, audio_file, lang):
model = self.models.get(lang)
output = model.transcribe([audio_file])
return output
async def generate(self, audio_file, lang='en'):
f = awaitify(self._generate)
t1 = time.time()
content = await f(audio_file, lang)
t2 = time.time()
return {
'content':content,
'timecost':t2 - t1
}
def init():
asr_engine = NVidiaASR()
g = ServerEnv()
g.generate = asr_engine.generate
if __name__ == '__main__':
webapp(init)