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)