aligner/app/aligner.py
2026-04-17 15:16:12 +08:00

40 lines
1.1 KiB
Python

from align import AlignEngine
from ahserver.serverenv import ServerEnv
from ahserver.webapp import webapp
from ahserver.filestorage import FileStorage
from appPublic.worker import awaitify
from appPublic.jsonConfig import getConfig
async def align(audio_webpath, text):
env = ServerEnv()
fs = FileStorage()
audio_path = fs.realPath(audio_webpath)
align = awaitfy(env.align_engine.align)
s = await align(audio_path, text)
lines = text.split('\n')
c_pos = 0
sentences = []
for l in lines:
if l:
segment={
'sentence': l,
'start': s[c_pos]['start']
'chars':[]
}
for c in l:
c_pos += 1
segment['chars'].append(s[c_pos])
segment['end'] = s[c_pos -1]['end']
sentences.append(segment)
return sentences
def init():
env = ServerEnv()
config = getConfig()
env.align_engine = AlignEngine(config.align_model)
env.align = align
if __name_ == '__main__':
webapp(init)