Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
be21aed0
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
大约 2 年 前同步成功
通知
210
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看板
提交
be21aed0
编写于
5月 11, 2022
作者:
L
lym0302
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
trans remove file way, test=doc
上级
b1f9b801
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
69 addition
and
53 deletion
+69
-53
paddlespeech/server/bin/paddlespeech_client.py
paddlespeech/server/bin/paddlespeech_client.py
+1
-1
paddlespeech/server/tests/tts/offline/http_client.py
paddlespeech/server/tests/tts/offline/http_client.py
+1
-1
paddlespeech/server/utils/audio_handler.py
paddlespeech/server/utils/audio_handler.py
+50
-37
paddlespeech/server/utils/audio_process.py
paddlespeech/server/utils/audio_process.py
+1
-1
paddlespeech/server/ws/tts_api.py
paddlespeech/server/ws/tts_api.py
+6
-5
tests/unit/server/offline/change_yaml.py
tests/unit/server/offline/change_yaml.py
+5
-4
tests/unit/server/online/tts/check_server/change_yaml.py
tests/unit/server/online/tts/check_server/change_yaml.py
+3
-2
tests/unit/server/online/tts/test_server/test_http_client.py
tests/unit/server/online/tts/test_server/test_http_client.py
+2
-2
未找到文件。
paddlespeech/server/bin/paddlespeech_client.py
浏览文件 @
be21aed0
...
@@ -92,7 +92,7 @@ class TTSClientExecutor(BaseExecutor):
...
@@ -92,7 +92,7 @@ class TTSClientExecutor(BaseExecutor):
temp_wav
=
str
(
random
.
getrandbits
(
128
))
+
".wav"
temp_wav
=
str
(
random
.
getrandbits
(
128
))
+
".wav"
soundfile
.
write
(
temp_wav
,
samples
,
sample_rate
)
soundfile
.
write
(
temp_wav
,
samples
,
sample_rate
)
wav2pcm
(
temp_wav
,
outfile
,
data_type
=
np
.
int16
)
wav2pcm
(
temp_wav
,
outfile
,
data_type
=
np
.
int16
)
os
.
system
(
"rm %s"
%
(
temp_wav
)
)
os
.
remove
(
temp_wav
)
else
:
else
:
logger
.
error
(
"The format for saving audio only supports wav or pcm"
)
logger
.
error
(
"The format for saving audio only supports wav or pcm"
)
...
...
paddlespeech/server/tests/tts/offline/http_client.py
浏览文件 @
be21aed0
...
@@ -61,7 +61,7 @@ def tts_client(args):
...
@@ -61,7 +61,7 @@ def tts_client(args):
temp_wav
=
str
(
random
.
getrandbits
(
128
))
+
".wav"
temp_wav
=
str
(
random
.
getrandbits
(
128
))
+
".wav"
soundfile
.
write
(
temp_wav
,
samples
,
sample_rate
)
soundfile
.
write
(
temp_wav
,
samples
,
sample_rate
)
wav2pcm
(
temp_wav
,
outfile
,
data_type
=
np
.
int16
)
wav2pcm
(
temp_wav
,
outfile
,
data_type
=
np
.
int16
)
os
.
system
(
"rm %s"
%
(
temp_wav
)
)
os
.
remove
(
temp_wav
)
else
:
else
:
print
(
"The format for saving audio only supports wav or pcm"
)
print
(
"The format for saving audio only supports wav or pcm"
)
...
...
paddlespeech/server/utils/audio_handler.py
浏览文件 @
be21aed0
...
@@ -321,50 +321,63 @@ class TTSWsHandler:
...
@@ -321,50 +321,63 @@ class TTSWsHandler:
await
ws
.
send
(
request
)
await
ws
.
send
(
request
)
logging
.
info
(
"send a message to the server"
)
logging
.
info
(
"send a message to the server"
)
#
Process the received response
#
4. Process the received response
message
=
await
ws
.
recv
()
message
=
await
ws
.
recv
()
first_response
=
time
.
time
()
-
st
first_response
=
time
.
time
()
-
st
message
=
json
.
loads
(
message
)
message
=
json
.
loads
(
message
)
status
=
message
[
"status"
]
status
=
message
[
"status"
]
while
True
:
# When throw an exception
if
status
==
-
1
:
# send end request
end_request
=
json
.
dumps
({
"task"
:
"tts"
,
"signal"
:
"end"
,
"session"
:
session
})
await
ws
.
send
(
end_request
)
break
while
(
status
==
1
):
# Rerutn last packet normally, no audio information
receive_time_list
.
append
(
time
.
time
())
elif
status
==
2
:
audio
=
message
[
"audio"
]
final_response
=
time
.
time
()
-
st
audio
=
base64
.
b64decode
(
audio
)
# bytes
duration
=
len
(
all_bytes
)
/
2.0
/
24000
chunk_duration_list
.
append
(
len
(
audio
)
/
2.0
/
24000
)
all_bytes
+=
audio
if
output
is
not
None
:
if
self
.
play
:
save_audio_success
=
save_audio
(
all_bytes
,
output
)
self
.
mutex
.
acquire
()
else
:
self
.
buffer
+=
audio
save_audio_success
=
False
self
.
mutex
.
release
()
if
self
.
start_play
:
# send end request
self
.
t
.
start
()
end_request
=
json
.
dumps
({
self
.
start_play
=
False
"task"
:
"tts"
,
"signal"
:
"end"
,
message
=
await
ws
.
recv
()
"session"
:
session
message
=
json
.
loads
(
message
)
})
status
=
message
[
"status"
]
await
ws
.
send
(
end_request
)
break
# 4. Last packet, no audio information
if
status
==
2
:
final_response
=
time
.
time
()
-
st
duration
=
len
(
all_bytes
)
/
2.0
/
24000
if
output
is
not
None
:
save_audio_success
=
save_audio
(
all_bytes
,
output
)
else
:
save_audio_success
=
False
# 5. send end request
# Return the audio stream normally
end_request
=
json
.
dumps
({
elif
status
==
1
:
"task"
:
"tts"
,
receive_time_list
.
append
(
time
.
time
())
"signal"
:
"end"
,
audio
=
message
[
"audio"
]
"session"
:
session
audio
=
base64
.
b64decode
(
audio
)
# bytes
})
chunk_duration_list
.
append
(
len
(
audio
)
/
2.0
/
24000
)
await
ws
.
send
(
end_request
)
all_bytes
+=
audio
if
self
.
play
:
self
.
mutex
.
acquire
()
self
.
buffer
+=
audio
self
.
mutex
.
release
()
if
self
.
start_play
:
self
.
t
.
start
()
self
.
start_play
=
False
message
=
await
ws
.
recv
()
message
=
json
.
loads
(
message
)
status
=
message
[
"status"
]
else
:
else
:
logger
.
error
(
"infer error
"
)
logger
.
error
(
"infer error, return status is invalid.
"
)
if
self
.
play
:
if
self
.
play
:
self
.
t
.
join
()
self
.
t
.
join
()
...
...
paddlespeech/server/utils/audio_process.py
浏览文件 @
be21aed0
...
@@ -167,7 +167,7 @@ def save_audio(bytes_data, audio_path, sample_rate: int=24000) -> bool:
...
@@ -167,7 +167,7 @@ def save_audio(bytes_data, audio_path, sample_rate: int=24000) -> bool:
channels
=
1
,
channels
=
1
,
bits
=
16
,
bits
=
16
,
sample_rate
=
sample_rate
)
sample_rate
=
sample_rate
)
os
.
system
(
"rm
./tmp.pcm"
)
os
.
remove
(
"
./tmp.pcm"
)
else
:
else
:
print
(
"Only supports saved audio format is pcm or wav"
)
print
(
"Only supports saved audio format is pcm or wav"
)
return
False
return
False
...
...
paddlespeech/server/ws/tts_api.py
浏览文件 @
be21aed0
...
@@ -16,7 +16,6 @@ import uuid
...
@@ -16,7 +16,6 @@ import uuid
from
fastapi
import
APIRouter
from
fastapi
import
APIRouter
from
fastapi
import
WebSocket
from
fastapi
import
WebSocket
from
fastapi
import
WebSocketDisconnect
from
starlette.websockets
import
WebSocketState
as
WebSocketState
from
starlette.websockets
import
WebSocketState
as
WebSocketState
from
paddlespeech.cli.log
import
logger
from
paddlespeech.cli.log
import
logger
...
@@ -87,17 +86,19 @@ async def websocket_endpoint(websocket: WebSocket):
...
@@ -87,17 +86,19 @@ async def websocket_endpoint(websocket: WebSocket):
resp
=
{
"status"
:
1
,
"audio"
:
tts_results
}
resp
=
{
"status"
:
1
,
"audio"
:
tts_results
}
await
websocket
.
send_json
(
resp
)
await
websocket
.
send_json
(
resp
)
except
StopIteration
as
e
:
except
StopIteration
as
e
:
import
pdb
pdb
.
set_trace
()
resp
=
{
"status"
:
2
,
"audio"
:
''
}
resp
=
{
"status"
:
2
,
"audio"
:
''
}
await
websocket
.
send_json
(
resp
)
await
websocket
.
send_json
(
resp
)
logger
.
info
(
logger
.
info
(
"Complete the synthesis of the audio streams"
)
"Complete the synthesis of the audio streams"
)
break
break
except
Exception
as
e
:
resp
=
{
"status"
:
-
1
,
"audio"
:
''
}
await
websocket
.
send_json
(
resp
)
break
else
:
else
:
logger
.
error
(
logger
.
error
(
"Invalid request, please check if the request is correct."
)
"Invalid request, please check if the request is correct."
)
except
WebSocketDisconnect
:
except
Exception
as
e
:
pass
logger
.
error
(
e
)
tests/unit/server/offline/change_yaml.py
浏览文件 @
be21aed0
#!/usr/bin/python
#!/usr/bin/python
import
argparse
import
argparse
import
os
import
os
import
shutil
import
yaml
import
yaml
...
@@ -14,7 +15,7 @@ def change_device(yamlfile: str, engine: str, device: str):
...
@@ -14,7 +15,7 @@ def change_device(yamlfile: str, engine: str, device: str):
model_type (dict): change model type
model_type (dict): change model type
"""
"""
tmp_yamlfile
=
yamlfile
.
split
(
".yaml"
)[
0
]
+
"_tmp.yaml"
tmp_yamlfile
=
yamlfile
.
split
(
".yaml"
)[
0
]
+
"_tmp.yaml"
os
.
system
(
"cp %s %s"
%
(
yamlfile
,
tmp_yamlfile
)
)
shutil
.
copyfile
(
yamlfile
,
tmp_yamlfile
)
if
device
==
'cpu'
:
if
device
==
'cpu'
:
set_device
=
'cpu'
set_device
=
'cpu'
...
@@ -41,7 +42,7 @@ def change_device(yamlfile: str, engine: str, device: str):
...
@@ -41,7 +42,7 @@ def change_device(yamlfile: str, engine: str, device: str):
print
(
yaml
.
dump
(
y
,
default_flow_style
=
False
,
sort_keys
=
False
))
print
(
yaml
.
dump
(
y
,
default_flow_style
=
False
,
sort_keys
=
False
))
yaml
.
dump
(
y
,
fw
,
allow_unicode
=
True
)
yaml
.
dump
(
y
,
fw
,
allow_unicode
=
True
)
os
.
system
(
"rm %s"
%
(
tmp_yamlfile
)
)
os
.
remove
(
tmp_yamlfile
)
print
(
"Change %s successfully."
%
(
yamlfile
))
print
(
"Change %s successfully."
%
(
yamlfile
))
...
@@ -52,7 +53,7 @@ def change_engine_type(yamlfile: str, engine_type):
...
@@ -52,7 +53,7 @@ def change_engine_type(yamlfile: str, engine_type):
task (str): asr or tts
task (str): asr or tts
"""
"""
tmp_yamlfile
=
yamlfile
.
split
(
".yaml"
)[
0
]
+
"_tmp.yaml"
tmp_yamlfile
=
yamlfile
.
split
(
".yaml"
)[
0
]
+
"_tmp.yaml"
os
.
system
(
"cp %s %s"
%
(
yamlfile
,
tmp_yamlfile
)
)
shutil
.
copyfile
(
yamlfile
,
tmp_yamlfile
)
speech_task
=
engine_type
.
split
(
"_"
)[
0
]
speech_task
=
engine_type
.
split
(
"_"
)[
0
]
with
open
(
tmp_yamlfile
)
as
f
,
open
(
yamlfile
,
"w+"
,
encoding
=
"utf-8"
)
as
fw
:
with
open
(
tmp_yamlfile
)
as
f
,
open
(
yamlfile
,
"w+"
,
encoding
=
"utf-8"
)
as
fw
:
...
@@ -65,7 +66,7 @@ def change_engine_type(yamlfile: str, engine_type):
...
@@ -65,7 +66,7 @@ def change_engine_type(yamlfile: str, engine_type):
y
[
'engine_list'
]
=
engine_list
y
[
'engine_list'
]
=
engine_list
print
(
yaml
.
dump
(
y
,
default_flow_style
=
False
,
sort_keys
=
False
))
print
(
yaml
.
dump
(
y
,
default_flow_style
=
False
,
sort_keys
=
False
))
yaml
.
dump
(
y
,
fw
,
allow_unicode
=
True
)
yaml
.
dump
(
y
,
fw
,
allow_unicode
=
True
)
os
.
system
(
"rm %s"
%
(
tmp_yamlfile
)
)
os
.
remove
(
tmp_yamlfile
)
print
(
"Change %s successfully."
%
(
yamlfile
))
print
(
"Change %s successfully."
%
(
yamlfile
))
...
...
tests/unit/server/online/tts/check_server/change_yaml.py
浏览文件 @
be21aed0
#!/usr/bin/python
#!/usr/bin/python
import
argparse
import
argparse
import
os
import
os
import
shutil
import
yaml
import
yaml
...
@@ -13,7 +14,7 @@ def change_value(args):
...
@@ -13,7 +14,7 @@ def change_value(args):
target_value
=
args
.
target_value
target_value
=
args
.
target_value
tmp_yamlfile
=
yamlfile
.
split
(
".yaml"
)[
0
]
+
"_tmp.yaml"
tmp_yamlfile
=
yamlfile
.
split
(
".yaml"
)[
0
]
+
"_tmp.yaml"
os
.
system
(
"cp %s %s"
%
(
yamlfile
,
tmp_yamlfile
)
)
shutil
.
copyfile
(
yamlfile
,
tmp_yamlfile
)
with
open
(
tmp_yamlfile
)
as
f
,
open
(
yamlfile
,
"w+"
,
encoding
=
"utf-8"
)
as
fw
:
with
open
(
tmp_yamlfile
)
as
f
,
open
(
yamlfile
,
"w+"
,
encoding
=
"utf-8"
)
as
fw
:
y
=
yaml
.
safe_load
(
f
)
y
=
yaml
.
safe_load
(
f
)
...
@@ -51,7 +52,7 @@ def change_value(args):
...
@@ -51,7 +52,7 @@ def change_value(args):
print
(
yaml
.
dump
(
y
,
default_flow_style
=
False
,
sort_keys
=
False
))
print
(
yaml
.
dump
(
y
,
default_flow_style
=
False
,
sort_keys
=
False
))
yaml
.
dump
(
y
,
fw
,
allow_unicode
=
True
)
yaml
.
dump
(
y
,
fw
,
allow_unicode
=
True
)
os
.
system
(
"rm %s"
%
(
tmp_yamlfile
)
)
os
.
remove
(
tmp_yamlfile
)
print
(
f
"Change key:
{
target_key
}
to value:
{
target_value
}
successfully."
)
print
(
f
"Change key:
{
target_key
}
to value:
{
target_value
}
successfully."
)
...
...
tests/unit/server/online/tts/test_server/test_http_client.py
浏览文件 @
be21aed0
...
@@ -75,8 +75,8 @@ if __name__ == "__main__":
...
@@ -75,8 +75,8 @@ if __name__ == "__main__":
args
=
parser
.
parse_args
()
args
=
parser
.
parse_args
()
os
.
system
(
"rm -rf %s"
%
(
args
.
output_dir
))
if
not
os
.
path
.
exists
(
args
.
output_dir
):
os
.
mkdir
(
args
.
output_dir
)
os
.
makedirs
(
args
.
output_dir
)
first_response_list
=
[]
first_response_list
=
[]
final_response_list
=
[]
final_response_list
=
[]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录