first commit

This commit is contained in:
yumoqing 2025-07-16 14:29:06 +08:00
commit c2897091b7
7 changed files with 127 additions and 0 deletions

0
README.md Normal file
View File

47
app/asr.py Normal file
View File

@ -0,0 +1,47 @@
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 awaitify
from appPublic.jsonConfig import getConfig
import torch
import nemo.collections.asr as nemo_asr
class NVidiaASR:
def __init__(self):
config = getConfig()
self.models = {}
device = torch.device(config.device)
for lang, model_path in config.asr_models.items():
debug(f'{lang=}, {model_path=}')
model = None
if lang == 'en':
model = nemo_asr.models.EncDecCTCModelBPE.restore_from(model_path)
elif lang == 'cn':
model = nemo_asr.models.EncDecCTCModel.restore_from(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():
g = ServerEnv()
g.asr_engine = NVidiaASR()
g.generate = g.asr_engine.generate
if __name__ == '__main__':
webapp(init)

50
conf/config.json Normal file
View File

@ -0,0 +1,50 @@
{
"device" : "cuda",
"asr_models":{
"cn": "/share/models/nvidia/stt_zh_citrinet_1024_gamma_0_25/stt_zh_citrinet_1024_gamma_0_25.nemo",
"en": "/share/models/nvidia/stt_en_conformer_ctc_large/stt_en_conformer_ctc_large.nemo"
},
"logger":{
"name":"asr",
"levelname":"info",
"logfile":"$[workdir]$/logs/asr.log"
},
"filesroot":"$[workdir]$/files",
"website":{
"paths":[
["$[workdir]$/wwwroot",""]
],
"client_max_size":10000,
"host":"0.0.0.0",
"port":9992,
"coding":"utf-8",
"indexes":[
"index.html",
"index.tmpl",
"index.ui",
"index.dspy",
"index.md"
],
"startswiths":[
{
"leading":"/idfile",
"registerfunction":"idfile"
}
],
"processors":[
[".dspy","dspy"],
[".md","md"]
],
"session_max_time":3000,
"session_issue_time":2500,
"session_redis_notuse":{
"url":"redis://127.0.0.1:6379"
}
},
"langMapping":{
"zh-Hans-CN":"zh-cn",
"zh-CN":"zh-cn",
"en-us":"en",
"en-US":"en"
}
}

15
nvidia-asr.service Normal file
View File

@ -0,0 +1,15 @@
[Unit]
Wants=systemd-networkd.service
[Service]
User=ymq
Group=ymq
Type=forking
WorkingDirectory=/share/ymq/run/nvidia-asr
ExecStart=/share/ymq/run/nvidia-asr/start.sh
ExecStop=/share/ymq/run/nvidia-asr/stop.sh
StandardOutput=append:/var/log/asr/asr.log
StandardError=append:/var/log/asr/asr.log
SyslogIdentifier=asr
[Install]
WantedBy=multi-user.target

4
requirements.txt Normal file
View File

@ -0,0 +1,4 @@
wheel
typing_extensions
numpy
nemo-toolkit[asr]

7
start.sh Executable file
View File

@ -0,0 +1,7 @@
#!/usr/bin/bash
rundir=/share/ymq/run/nvidia-asr
cd $rundir
CUDA_VISIBLE_DEVICES=6 $rundir/nvidia-asr.env/bin/python app/asr.py -p 9992 &
CUDA_VISIBLE_DEVICES=6 $rundir/nvidia-asr.env/bin/python app/asr.py -p 9992 &

4
stop.sh Executable file
View File

@ -0,0 +1,4 @@
#!/usr/bin/bash
/d/ymq/bin/killname asr.py
echo "asr.py killed"