40 lines
1.1 KiB
Python
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)
|