parent
2a530d49ff
commit
63a1799fa9
@ -0,0 +1,13 @@
|
|||||||
|
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
@ -0,0 +1,13 @@
|
|||||||
|
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
@ -0,0 +1,8 @@
|
|||||||
|
# This is the parameter configuration file for PaddleSpeech Serving.
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
# SERVER SETTING #
|
||||||
|
##################################################################
|
||||||
|
host: '0.0.0.0'
|
||||||
|
port: 8090
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
@ -0,0 +1,13 @@
|
|||||||
|
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
@ -0,0 +1,63 @@
|
|||||||
|
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
from fastapi import APIRouter
|
||||||
|
import base64
|
||||||
|
|
||||||
|
|
||||||
|
from engine.asr.python.asr_engine import ASREngine
|
||||||
|
from .response import ASRResponse
|
||||||
|
from .request import ASRRequest
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
|
||||||
|
@router.get('/paddlespeech/asr/help')
|
||||||
|
def help():
|
||||||
|
"""help
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
json: [description]
|
||||||
|
"""
|
||||||
|
return {'hello': 'world'}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/paddlespeech/asr", response_model=ASRResponse)
|
||||||
|
def asr(request_body: ASRRequest):
|
||||||
|
"""asr api
|
||||||
|
|
||||||
|
Args:
|
||||||
|
request_body (ASRRequest): [description]
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
json: [description]
|
||||||
|
"""
|
||||||
|
# single
|
||||||
|
asr_engine = ASREngine()
|
||||||
|
|
||||||
|
asr_engine.init()
|
||||||
|
asr_results = asr_engine.run()
|
||||||
|
asr_engine.postprocess()
|
||||||
|
|
||||||
|
json_body = {
|
||||||
|
"success": True,
|
||||||
|
"code": 0,
|
||||||
|
"message": {
|
||||||
|
"description": "success"
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"transcription": asr_results
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return json_body
|
@ -0,0 +1,59 @@
|
|||||||
|
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
import functools
|
||||||
|
import logging
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
'logger',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class Logger(object):
|
||||||
|
def __init__(self, name: str=None):
|
||||||
|
name = 'PaddleSpeech' if not name else name
|
||||||
|
self.logger = logging.getLogger(name)
|
||||||
|
|
||||||
|
log_config = {
|
||||||
|
'DEBUG': 10,
|
||||||
|
'INFO': 20,
|
||||||
|
'TRAIN': 21,
|
||||||
|
'EVAL': 22,
|
||||||
|
'WARNING': 30,
|
||||||
|
'ERROR': 40,
|
||||||
|
'CRITICAL': 50,
|
||||||
|
'EXCEPTION': 100,
|
||||||
|
}
|
||||||
|
for key, level in log_config.items():
|
||||||
|
logging.addLevelName(level, key)
|
||||||
|
if key == 'EXCEPTION':
|
||||||
|
self.__dict__[key.lower()] = self.logger.exception
|
||||||
|
else:
|
||||||
|
self.__dict__[key.lower()] = functools.partial(self.__call__,
|
||||||
|
level)
|
||||||
|
|
||||||
|
self.format = logging.Formatter(
|
||||||
|
fmt='[%(asctime)-15s] [%(levelname)8s] - %(message)s')
|
||||||
|
|
||||||
|
self.handler = logging.StreamHandler()
|
||||||
|
self.handler.setFormatter(self.format)
|
||||||
|
|
||||||
|
self.logger.addHandler(self.handler)
|
||||||
|
self.logger.setLevel(logging.DEBUG)
|
||||||
|
self.logger.propagate = False
|
||||||
|
|
||||||
|
def __call__(self, log_level: str, msg: str):
|
||||||
|
self.logger.log(log_level, msg)
|
||||||
|
|
||||||
|
|
||||||
|
logger = Logger()
|
@ -0,0 +1,66 @@
|
|||||||
|
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
import base64
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
def readwav2base64(wav_file):
|
||||||
|
"""
|
||||||
|
read wave file and covert to base64 string
|
||||||
|
"""
|
||||||
|
with open(wav_file, 'rb') as f:
|
||||||
|
base64_bytes = base64.b64encode(f.read())
|
||||||
|
base64_string = base64_bytes.decode('utf-8')
|
||||||
|
return base64_string
|
||||||
|
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
"""
|
||||||
|
main func
|
||||||
|
"""
|
||||||
|
url = "http://127.0.0.1:8090/paddlespeech/asr"
|
||||||
|
|
||||||
|
# start Timestamp
|
||||||
|
time_start=time.time()
|
||||||
|
|
||||||
|
# test_audio_dir = "test_data/16_audio.wav"
|
||||||
|
# audio = readwav2base64(test_audio_dir)
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"audio": "exSI6ICJlbiIsCgkgICAgInBvc2l0aW9uIjogImZhbHNlIgoJf",
|
||||||
|
"audio_format": "wav",
|
||||||
|
"sample_rate": 16000,
|
||||||
|
"lang": "zh_cn",
|
||||||
|
}
|
||||||
|
|
||||||
|
r = requests.post(url=url, data=json.dumps(data))
|
||||||
|
|
||||||
|
# ending Timestamp
|
||||||
|
time_end=time.time()
|
||||||
|
print('time cost',time_end - time_start, 's')
|
||||||
|
|
||||||
|
print(r.json())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("--model_type", action="store",
|
||||||
|
help="model type: u2, dp2", default="dp2")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
main(args)
|
Loading…
Reference in new issue