1 Star 0 Fork 46

K.L.Zous / SpeechToText

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
asrserver.py 3.17 KB
一键复制 编辑 原始数据 按行查看 历史
yzd 提交于 2021-08-02 17:14 . feat: flask文件上传
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: nl8590687
语音识别API的HTTP服务器程序
"""
import http.server
from LanguageModel2 import ModelLanguage
from SpeechModel251 import ModelSpeech
datapath = './'
modelpath = 'model_speech/'
ms = ModelSpeech(datapath)
ms.LoadModel(modelpath + 'speech_model251_e_0_step_625000.model')
ml = ModelLanguage('model_language')
ml.LoadModel()
class TestHTTPHandle(http.server.BaseHTTPRequestHandler):
def setup(self):
self.request.settimeout(120)
http.server.BaseHTTPRequestHandler.setup(self)
def _set_response(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
buf = 'ASRT_SpeechRecognition API'
self.protocal_version = 'HTTP/1.1'
self._set_response()
buf = bytes(buf, encoding="utf-8")
self.wfile.write(buf)
def do_POST(self):
'''
处理通过POST方式传递过来并接收的语音数据
通过语音模型和语言模型计算得到语音识别结果并返回
'''
path = self.path
print(path)
# 获取post提交的数据
datas = self.rfile.read(int(self.headers['content-length']))
# datas = urllib.unquote(datas).decode("utf-8", 'ignore')
datas = datas.decode('utf-8')
datas_split = datas.split('&')
token = ''
fs = 0
wavs = []
# type = 'wavfilebytes' # wavfilebytes or python-list
for line in datas_split:
[key, value] = line.split('=')
if ('wavs' == key and '' != value):
wavs.append(int(value))
elif ('fs' == key):
fs = int(value)
elif ('token' == key):
token = value
# elif('type' == key):
# type = value
else:
print(key, value)
if (token != 'qwertasd'):
buf = '403'
print(buf)
buf = bytes(buf, encoding="utf-8")
self.wfile.write(buf)
return
# if('python-list' == type):
if (len(wavs) > 0):
r = self.recognize([wavs], fs)
else:
r = ''
# else:
# r = self.recognize_from_file('')
if (token == 'qwertasd'):
# buf = '成功\n'+'wavs:\n'+str(wavs)+'\nfs:\n'+str(fs)
buf = r
else:
buf = '403'
# print(datas)
self._set_response()
# buf = '<!DOCTYPE HTML> \n<html> \n<head>\n<title>Post page</title>\n</head> \n<body>Post Data:%s <br />Path:%s\n</body> \n</html>'%(datas,self.path)
print(buf)
buf = bytes(buf, encoding="utf-8")
self.wfile.write(buf)
def recognize(self, wavs, fs):
r = ''
try:
r_speech = ms.RecognizeSpeech(wavs, fs)
print(r_speech)
str_pinyin = r_speech
r = ml.SpeechToText(str_pinyin)
except:
r = ''
print('[*Message] Server raise a bug. ')
return r
pass
def recognize_from_file(self, filename):
pass
import socket
class HTTPServerV6(http.server.HTTPServer):
address_family = socket.AF_INET6
def start_server(ip, port):
if (':' in ip):
http_server = HTTPServerV6((ip, port), TestHTTPHandle)
else:
http_server = http.server.HTTPServer((ip, int(port)), TestHTTPHandle)
print('服务器已开启')
try:
http_server.serve_forever() # 设置一直监听并接收请求
except KeyboardInterrupt:
pass
http_server.server_close()
print('HTTP server closed')
if __name__ == '__main__':
start_server('', 20000) # For IPv4 Network Only
# start_server('::', 20000) # For IPv6 Network
Java
1
https://gitee.com/hellozous/speechToText.git
git@gitee.com:hellozous/speechToText.git
hellozous
speechToText
SpeechToText
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891