Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
299835a8
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
大约 1 年 前同步成功
通知
207
Star
8425
Fork
1598
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
245
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeech
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
245
Issue
245
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
299835a8
编写于
1月 25, 2022
作者:
L
liangym
提交者:
GitHub
1月 25, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'server' into tts-server
上级
777a0262
6bd011d7
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
304 addition
and
57 deletion
+304
-57
speechserving/setup.py
speechserving/setup.py
+13
-0
speechserving/speechserving/__init__.py
speechserving/speechserving/__init__.py
+13
-0
speechserving/speechserving/bin/main.py
speechserving/speechserving/bin/main.py
+10
-6
speechserving/speechserving/bin/paddlespeech-client.py
speechserving/speechserving/bin/paddlespeech-client.py
+10
-6
speechserving/speechserving/bin/paddlespeech-server.py
speechserving/speechserving/bin/paddlespeech-server.py
+10
-6
speechserving/speechserving/conf/application.yaml
speechserving/speechserving/conf/application.yaml
+8
-0
speechserving/speechserving/engine/__init__.py
speechserving/speechserving/engine/__init__.py
+13
-0
speechserving/speechserving/engine/asr/python/asr_engine.py
speechserving/speechserving/engine/asr/python/asr_engine.py
+10
-7
speechserving/speechserving/engine/base_engine.py
speechserving/speechserving/engine/base_engine.py
+1
-0
speechserving/speechserving/main.py
speechserving/speechserving/main.py
+4
-1
speechserving/speechserving/restful/__init__.py
speechserving/speechserving/restful/__init__.py
+13
-0
speechserving/speechserving/restful/api.py
speechserving/speechserving/restful/api.py
+1
-0
speechserving/speechserving/restful/asr_api.py
speechserving/speechserving/restful/asr_api.py
+63
-0
speechserving/speechserving/restful/request.py
speechserving/speechserving/restful/request.py
+2
-2
speechserving/speechserving/restful/tts_api.py
speechserving/speechserving/restful/tts_api.py
+8
-29
speechserving/speechserving/utils/__init__.py
speechserving/speechserving/utils/__init__.py
+0
-0
speechserving/speechserving/utils/errors.py
speechserving/speechserving/utils/errors.py
+0
-0
speechserving/speechserving/utils/log.py
speechserving/speechserving/utils/log.py
+59
-0
speechserving/tests/http_client.py
speechserving/tests/http_client.py
+66
-0
未找到文件。
speechserving/setup.py
浏览文件 @
299835a8
# 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.
speechserving/speechserving/__init__.py
浏览文件 @
299835a8
# 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.
speechserving/speechserving/bin/main.py
浏览文件 @
299835a8
...
...
@@ -14,7 +14,6 @@
import
argparse
def
init
(
args
):
""" 系统初始化
"""
...
...
@@ -27,13 +26,18 @@ def main(args):
app
.
run
(
host
=
'0.0.0.0'
,
port
=
conf
.
port
)
if
__name__
==
"__main__"
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
"--config_file"
,
action
=
"store"
,
help
=
"yaml file of the app"
,
default
=
"./conf/application.yaml"
)
parser
.
add_argument
(
"--log_file"
,
action
=
"store"
,
help
=
"log file"
,
default
=
"./log/paddlespeech.log"
)
parser
.
add_argument
(
"--config_file"
,
action
=
"store"
,
help
=
"yaml file of the app"
,
default
=
"./conf/application.yaml"
)
parser
.
add_argument
(
"--log_file"
,
action
=
"store"
,
help
=
"log file"
,
default
=
"./log/paddlespeech.log"
)
args
=
parser
.
parse_args
()
main
(
args
)
speechserving/speechserving/bin/paddlespeech-client.py
浏览文件 @
299835a8
...
...
@@ -14,7 +14,6 @@
import
argparse
def
init
(
args
):
""" 系统初始化
"""
...
...
@@ -27,13 +26,18 @@ def main(args):
app
.
run
(
host
=
'0.0.0.0'
,
port
=
conf
.
port
)
if
__name__
==
"__main__"
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
"--config_file"
,
action
=
"store"
,
help
=
"yaml file of the app"
,
default
=
"./conf/application.yaml"
)
parser
.
add_argument
(
"--log_file"
,
action
=
"store"
,
help
=
"log file"
,
default
=
"./log/paddlespeech.log"
)
parser
.
add_argument
(
"--config_file"
,
action
=
"store"
,
help
=
"yaml file of the app"
,
default
=
"./conf/application.yaml"
)
parser
.
add_argument
(
"--log_file"
,
action
=
"store"
,
help
=
"log file"
,
default
=
"./log/paddlespeech.log"
)
args
=
parser
.
parse_args
()
main
(
args
)
speechserving/speechserving/bin/paddlespeech-server.py
浏览文件 @
299835a8
...
...
@@ -14,7 +14,6 @@
import
argparse
def
init
(
args
):
""" 系统初始化
"""
...
...
@@ -27,13 +26,18 @@ def main(args):
app
.
run
(
host
=
'0.0.0.0'
,
port
=
conf
.
port
)
if
__name__
==
"__main__"
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
"--config_file"
,
action
=
"store"
,
help
=
"yaml file of the app"
,
default
=
"./conf/application.yaml"
)
parser
.
add_argument
(
"--log_file"
,
action
=
"store"
,
help
=
"log file"
,
default
=
"./log/paddlespeech.log"
)
parser
.
add_argument
(
"--config_file"
,
action
=
"store"
,
help
=
"yaml file of the app"
,
default
=
"./conf/application.yaml"
)
parser
.
add_argument
(
"--log_file"
,
action
=
"store"
,
help
=
"log file"
,
default
=
"./log/paddlespeech.log"
)
args
=
parser
.
parse_args
()
main
(
args
)
speechserving/speechserving/conf/application.yaml
浏览文件 @
299835a8
# This is the parameter configuration file for PaddleSpeech Serving.
##################################################################
# SERVER SETTING #
##################################################################
host
:
'
0.0.0.0'
port
:
8090
speechserving/speechserving/engine/__init__.py
浏览文件 @
299835a8
# 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.
speechserving/speechserving/engine/asr/python/asr_engine.py
浏览文件 @
299835a8
...
...
@@ -11,15 +11,19 @@
# 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
engine
import
BaseEngine
from
engine.base_engine
import
BaseEngine
from
utils.log
import
logger
__all__
=
[
'ASREngine'
]
class
ASREngine
(
BaseEngine
):
def
__init__
(
self
,
name
):
class
ASREngine
(
BaseEngine
):
def
__init__
(
self
,
name
=
None
):
super
(
ASREngine
,
self
).
__init__
()
self
.
executor
=
name
self
.
input
=
None
self
.
output
=
None
def
init
(
self
):
pass
...
...
@@ -28,8 +32,8 @@ class ASREngine(BaseEngine):
pass
def
run
(
self
):
pass
logger
.
info
(
"start run asr engine"
)
return
"hello world"
if
__name__
==
"__main__"
:
...
...
@@ -39,4 +43,3 @@ if __name__ == "__main__":
print
(
class1
is
class2
)
print
(
id
(
class1
))
print
(
id
(
class2
))
speechserving/speechserving/engine/base_engine.py
浏览文件 @
299835a8
...
...
@@ -18,6 +18,7 @@ from typing import Union
from
pattern_singleton
import
Singleton
class
BaseEngine
(
metaclass
=
Singleton
):
"""
An base engine class
...
...
speechserving/speechserving/main.py
浏览文件 @
299835a8
...
...
@@ -15,6 +15,7 @@ import argparse
import
uvicorn
import
yaml
from
engine.tts.python.tts_engine
import
TTSEngine
from
fastapi
import
FastAPI
from
restful.api
import
router
as
api_router
...
...
@@ -31,6 +32,7 @@ def init(args):
app
.
include_router
(
api_router
)
# engine single
TTS_ENGINE
=
TTSEngine
()
# todo others
...
...
@@ -56,7 +58,8 @@ if __name__ == "__main__":
"--config_file"
,
action
=
"store"
,
help
=
"yaml file of the app"
,
default
=
"./server.yaml"
)
default
=
"./conf/tts/tts.yaml"
)
parser
.
add_argument
(
"--log_file"
,
action
=
"store"
,
...
...
speechserving/speechserving/restful/__init__.py
浏览文件 @
299835a8
# 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.
speechserving/speechserving/restful/api.py
浏览文件 @
299835a8
...
...
@@ -13,6 +13,7 @@
# limitations under the License.
from
fastapi
import
APIRouter
from
.tts_api
import
router
as
tts_router
#from .asr_api import router as asr_router
...
...
speechserving/speechserving/restful/asr_api.py
0 → 100644
浏览文件 @
299835a8
# 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
speechserving/speechserving/restful/request.py
浏览文件 @
299835a8
...
...
@@ -29,8 +29,8 @@ class ASRRequest(BaseModel):
"audio": "exSI6ICJlbiIsCgkgICAgInBvc2l0aW9uIjogImZhbHNlIgoJf...",
"audio_format": "wav",
"sample_rate": 16000,
"lang
": "zh_cn",
"ptt
":false
"lang": "zh_cn",
"ptt":false
}
"""
audio
:
str
...
...
speechserving/speechserving/
controller/
api.py
→
speechserving/speechserving/
restful/tts_
api.py
浏览文件 @
299835a8
...
...
@@ -13,38 +13,17 @@
# limitations under the License.
from
fastapi
import
APIRouter
router
=
APIRouter
()
router
.
include_router
(
auth_router
)
router
.
include_router
(
user_router
)
router
.
include_router
(
profile_router
)
router
.
include_router
(
comment_router
)
router
.
include_router
(
article_router
)
router
.
include_router
(
tag_router
)
def
init_app
(
app
):
asr
,
tts
router
=
APIRouter
()
if
asr
backend
dyload
(
asr
)
asr
.
register_router
(
router
)
if
tts
backend
dyload
(
asr
)
@
router
.
get
(
'/paddlespeech/tts/help'
)
def
help
():
"""help
Returns:
json: [description]
"""
return
{
'hello'
:
'world'
}
asr
.
register_router
(
router
)
app
.
include_router
(
router
)
speechserving/speechserving/utils/__init__.py
0 → 100644
浏览文件 @
299835a8
speechserving/speechserving/utils/errors.py
0 → 100644
浏览文件 @
299835a8
speechserving/speechserving/utils/log.py
0 → 100644
浏览文件 @
299835a8
# 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
()
speechserving/tests/http_client.py
0 → 100644
浏览文件 @
299835a8
# 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
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录