Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
robot-trans-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
robot-trans-platform
Commits
1620e1e7
Commit
1620e1e7
authored
Jun 17, 2025
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改音频识别结果
parent
06c2aa48
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
195 additions
and
29 deletions
+195
-29
robot-trans-manager/src/main/java/com/mortals/xhx/busiz/web/ApiSendMsgController.java
.../java/com/mortals/xhx/busiz/web/ApiSendMsgController.java
+6
-4
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Audio.java
...nager/src/main/java/com/mortals/xhx/common/pdu/Audio.java
+17
-0
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/AudioRoot.java
...r/src/main/java/com/mortals/xhx/common/pdu/AudioRoot.java
+10
-0
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Header.java
...ager/src/main/java/com/mortals/xhx/common/pdu/Header.java
+11
-0
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Iat.java
...manager/src/main/java/com/mortals/xhx/common/pdu/Iat.java
+13
-0
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Parameter.java
...r/src/main/java/com/mortals/xhx/common/pdu/Parameter.java
+8
-0
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Payload.java
...ger/src/main/java/com/mortals/xhx/common/pdu/Payload.java
+8
-0
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Result.java
...ager/src/main/java/com/mortals/xhx/common/pdu/Result.java
+10
-0
robot-trans-manager/src/main/java/com/mortals/xhx/common/utils/IatModelMulUtil.java
...in/java/com/mortals/xhx/common/utils/IatModelMulUtil.java
+101
-24
robot-trans-manager/src/test/java/httpclient/system.http
robot-trans-manager/src/test/java/httpclient/system.http
+11
-1
robot-trans-manager/src/test/java/httpclient/test.mp3
robot-trans-manager/src/test/java/httpclient/test.mp3
+0
-0
No files found.
robot-trans-manager/src/main/java/com/mortals/xhx/busiz/web/ApiSendMsgController.java
View file @
1620e1e7
...
...
@@ -97,8 +97,9 @@ public class ApiSendMsgController {
String
jsonStr
=
""
;
try
{
if
(
file
==
null
||
file
.
getSize
()
==
0L
)
throw
new
AppException
(
"文件为空!"
);
if
(!
"pcm"
.
equalsIgnoreCase
(
FileUtil
.
getSuffix
(
file
.
getOriginalFilename
())))
throw
new
AppException
(
"只支持pcm文件!"
);
if
(!
"pcm"
.
equalsIgnoreCase
(
FileUtil
.
getSuffix
(
file
.
getOriginalFilename
()))&&
!
"mp3"
.
equalsIgnoreCase
(
FileUtil
.
getSuffix
(
file
.
getOriginalFilename
())))
throw
new
AppException
(
"只支持pcm或mp3文件!"
);
//if (file.getOriginalFilename())
String
filePath
=
uploadService
.
saveFileUpload
(
file
,
prePath
,
null
);
filePath
=
uploadService
.
getFilePath
(
filePath
);
...
...
@@ -124,12 +125,13 @@ public class ApiSendMsgController {
// model.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonStr
=
JSONObject
.
toJSONString
(
model
);
}
catch
(
AppException
e
)
{
log
.
error
(
"异常"
,
e
);
model
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
model
.
put
(
KEY_RESULT_MSG
,
e
.
getMessage
());
jsonStr
=
JSONObject
.
toJSONString
(
model
);
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
model
.
put
(
KEY_RESULT_CODE
,
VALUE_RESULT_FAILURE
);
model
.
put
(
KEY_RESULT_MSG
,
"文件上传失败"
);
jsonStr
=
JSONObject
.
toJSONString
(
model
);
...
...
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Audio.java
0 → 100644
View file @
1620e1e7
package
com.mortals.xhx.common.pdu
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
lombok.Data
;
@Data
public
class
Audio
{
@JSONField
(
name
=
"sample_rate"
)
private
int
sampleRate
;
private
int
channels
;
private
String
audio
;
private
String
encoding
;
@JSONField
(
name
=
"bit_depth"
)
private
int
bitDepth
;
private
int
seq
;
private
int
status
;
}
\ No newline at end of file
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/AudioRoot.java
0 → 100644
View file @
1620e1e7
package
com.mortals.xhx.common.pdu
;
import
lombok.Data
;
@Data
public
class
AudioRoot
{
private
Payload
payload
;
private
Parameter
parameter
;
private
Header
header
;
}
\ No newline at end of file
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Header.java
0 → 100644
View file @
1620e1e7
package
com.mortals.xhx.common.pdu
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
lombok.Data
;
@Data
public
class
Header
{
@JSONField
(
name
=
"app_id"
)
private
String
appId
;
private
int
status
;
}
\ No newline at end of file
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Iat.java
0 → 100644
View file @
1620e1e7
package
com.mortals.xhx.common.pdu
;
import
lombok.Data
;
@Data
public
class
Iat
{
private
Result
result
;
private
int
vinfo
;
private
String
domain
;
private
int
eos
;
private
String
language
;
private
String
accent
;
}
\ No newline at end of file
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Parameter.java
0 → 100644
View file @
1620e1e7
package
com.mortals.xhx.common.pdu
;
import
lombok.Data
;
@Data
public
class
Parameter
{
private
Iat
iat
;
}
\ No newline at end of file
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Payload.java
0 → 100644
View file @
1620e1e7
package
com.mortals.xhx.common.pdu
;
import
lombok.Data
;
@Data
public
class
Payload
{
private
Audio
audio
;
}
\ No newline at end of file
robot-trans-manager/src/main/java/com/mortals/xhx/common/pdu/Result.java
0 → 100644
View file @
1620e1e7
package
com.mortals.xhx.common.pdu
;
import
lombok.Data
;
@Data
public
class
Result
{
private
String
compress
;
private
String
format
;
private
String
encoding
;
}
\ No newline at end of file
robot-trans-manager/src/main/java/com/mortals/xhx/common/utils/IatModelMulUtil.java
View file @
1620e1e7
package
com.mortals.xhx.common.utils
;
import
com.alibaba.fastjson.JSON
;
import
com.google.gson.Gson
;
import
com.mortals.xhx.common.pdu.*
;
import
lombok.extern.slf4j.Slf4j
;
import
okhttp3.HttpUrl
;
import
okhttp3.Response
;
...
...
@@ -34,6 +36,10 @@ public class IatModelMulUtil extends WebSocketListener {
public
static
final
int
StatusFirstFrame
=
0
;
public
static
final
int
StatusContinueFrame
=
1
;
public
static
final
int
StatusLastFrame
=
2
;
public
static
final
String
encoding
=
"raw"
;
public
static
final
Gson
gson
=
new
Gson
();
// 开始时间
private
static
Date
dateBegin
=
new
Date
();
...
...
@@ -47,28 +53,19 @@ public class IatModelMulUtil extends WebSocketListener {
public
String
appid
;
// public SseEmitter emitter;
public
IatModelMulUtil
(
String
file
,
String
appid
)
{
this
.
file
=
file
;
this
.
appid
=
appid
;
// this.emitter = emitter;
}
/*
public IatModelMulUtil(String file, String appid, SseEmitter emitter) {
this.file = file;
this.appid = appid;
this.emitter = emitter;
}
*/
@Override
public
void
onOpen
(
WebSocket
webSocket
,
Response
response
)
{
super
.
onOpen
(
webSocket
,
response
);
new
Thread
(()
->
{
//连接成功,开始发送数据
int
frameSize
=
1280
;
//每一帧音频的大小,建议每 40ms 发送 122B
//int frameSize = 1280; //每一帧音频的大小,建议每 40ms 发送 122B
int
frameSize
=
8092
;
//每一帧音频的大小,建议每 40ms 发送 122B
int
intervel
=
40
;
int
status
=
0
;
// 音频的状态
int
seq
=
0
;
//数据序号
...
...
@@ -84,6 +81,42 @@ public class IatModelMulUtil extends WebSocketListener {
}
switch
(
status
)
{
case
StatusFirstFrame:
// 第一帧音频status = 0
AudioRoot
audioRoot
=
new
AudioRoot
();
com
.
mortals
.
xhx
.
common
.
pdu
.
Header
header
=
new
com
.
mortals
.
xhx
.
common
.
pdu
.
Header
();
header
.
setAppId
(
appid
);
header
.
setStatus
(
StatusFirstFrame
);
audioRoot
.
setHeader
(
header
);
Parameter
parameter
=
new
Parameter
();
Iat
iat
=
new
Iat
();
iat
.
setDomain
(
"slm"
);
iat
.
setLanguage
(
"zh_cn"
);
iat
.
setAccent
(
"mulacc"
);
iat
.
setEos
(
6000
);
iat
.
setVinfo
(
1
);
com
.
mortals
.
xhx
.
common
.
pdu
.
Result
result
=
new
com
.
mortals
.
xhx
.
common
.
pdu
.
Result
();
result
.
setEncoding
(
"utf8"
);
result
.
setCompress
(
"raw"
);
result
.
setFormat
(
"json"
);
iat
.
setResult
(
result
);
parameter
.
setIat
(
iat
);
audioRoot
.
setParameter
(
parameter
);
com
.
mortals
.
xhx
.
common
.
pdu
.
Payload
payload
=
new
com
.
mortals
.
xhx
.
common
.
pdu
.
Payload
();
Audio
audio
=
new
Audio
();
audio
.
setEncoding
(
encoding
);
audio
.
setSampleRate
(
16000
);
audio
.
setChannels
(
1
);
audio
.
setBitDepth
(
16
);
audio
.
setSeq
(
seq
);
audio
.
setStatus
(
status
);
audio
.
setAudio
(
Base64
.
getEncoder
().
encodeToString
(
Arrays
.
copyOf
(
buffer
,
len
)));
payload
.
setAudio
(
audio
);
audioRoot
.
setPayload
(
payload
);
String
json
=
JSON
.
toJSONString
(
audioRoot
);
/*
String json = "{\n" +
" \"header\": {\n" +
" \"app_id\": \"" + appid + "\",\n" +
...
...
@@ -114,12 +147,33 @@ public class IatModelMulUtil extends WebSocketListener {
" \"audio\": \"" + Base64.getEncoder().encodeToString(Arrays.copyOf(buffer, len)) + "\"\n" +
" }\n" +
" }\n" +
"}"
;
"}";*/
// log.info("first json==>" + json);
webSocket
.
send
(
json
);
status
=
StatusContinueFrame
;
// 发送完第一帧改变status 为 1
break
;
case
StatusContinueFrame:
//中间帧status = 1
json
=
"{\n"
+
audioRoot
=
new
AudioRoot
();
header
=
new
com
.
mortals
.
xhx
.
common
.
pdu
.
Header
();
header
.
setAppId
(
appid
);
header
.
setStatus
(
status
);
audioRoot
.
setHeader
(
header
);
payload
=
new
com
.
mortals
.
xhx
.
common
.
pdu
.
Payload
();
audio
=
new
Audio
();
audio
.
setEncoding
(
encoding
);
audio
.
setSampleRate
(
16000
);
audio
.
setChannels
(
1
);
audio
.
setBitDepth
(
16
);
audio
.
setSeq
(
seq
);
audio
.
setStatus
(
status
);
audio
.
setAudio
(
Base64
.
getEncoder
().
encodeToString
(
Arrays
.
copyOf
(
buffer
,
len
)));
payload
.
setAudio
(
audio
);
audioRoot
.
setPayload
(
payload
);
json
=
JSON
.
toJSONString
(
audioRoot
);
/* json = "{\n" +
" \"header\": {\n" +
" \"app_id\": \"" + appid + "\",\n" +
" \"status\": 1\n" +
...
...
@@ -135,11 +189,32 @@ public class IatModelMulUtil extends WebSocketListener {
" \"audio\": \"" + Base64.getEncoder().encodeToString(Arrays.copyOf(buffer, len)) + "\"\n" +
" }\n" +
" }\n" +
"}"
;
"}";*/
// log.info("mid json==>" + json);
webSocket
.
send
(
json
);
break
;
case
StatusLastFrame:
// 最后一帧音频status = 2 ,标志音频发送结束
json
=
"{\n"
+
audioRoot
=
new
AudioRoot
();
header
=
new
com
.
mortals
.
xhx
.
common
.
pdu
.
Header
();
header
.
setAppId
(
appid
);
header
.
setStatus
(
status
);
audioRoot
.
setHeader
(
header
);
payload
=
new
com
.
mortals
.
xhx
.
common
.
pdu
.
Payload
();
audio
=
new
Audio
();
audio
.
setEncoding
(
encoding
);
audio
.
setSampleRate
(
16000
);
audio
.
setChannels
(
1
);
audio
.
setBitDepth
(
16
);
audio
.
setSeq
(
seq
);
audio
.
setStatus
(
status
);
audio
.
setAudio
(
""
);
payload
.
setAudio
(
audio
);
audioRoot
.
setPayload
(
payload
);
json
=
JSON
.
toJSONString
(
audioRoot
);
/* json = "{\n" +
" \"header\": {\n" +
" \"app_id\": \"" + appid + "\",\n" +
" \"status\": 2\n" +
...
...
@@ -155,7 +230,8 @@ public class IatModelMulUtil extends WebSocketListener {
" \"audio\": \"\"\n" +
" }\n" +
" }\n" +
"}"
;
"}";*/
// log.info("last json==>" + json);
webSocket
.
send
(
json
);
break
end
;
}
...
...
@@ -170,6 +246,7 @@ public class IatModelMulUtil extends WebSocketListener {
@Override
public
void
onMessage
(
WebSocket
webSocket
,
String
text
)
{
super
.
onMessage
(
webSocket
,
text
);
log
.
info
(
"onMessage==>"
+
text
);
JsonParse
jsonParse
=
gson
.
fromJson
(
text
,
JsonParse
.
class
);
if
(
jsonParse
!=
null
)
{
if
(
jsonParse
.
header
.
code
!=
0
)
{
...
...
@@ -183,7 +260,7 @@ public class IatModelMulUtil extends WebSocketListener {
JsonParseText
jsonParseText
=
gson
.
fromJson
(
decodeRes
,
JsonParseText
.
class
);
List
<
Ws
>
wsList
=
jsonParseText
.
ws
;
//
System.out.print
("中间识别结果==》");
//
log.info
("中间识别结果==》");
for
(
Ws
ws
:
wsList
)
{
List
<
Cw
>
cwList
=
ws
.
cw
;
for
(
Cw
cw
:
cwList
)
{
...
...
@@ -200,7 +277,7 @@ public class IatModelMulUtil extends WebSocketListener {
}
}
if
(
jsonParse
.
payload
.
result
.
status
==
2
)
{
// 最终结果 说明数据全部返回完毕,可以关闭连接,释放资源
System
.
out
.
println
(
"session end "
);
log
.
info
(
"session end "
);
dateEnd
=
new
Date
();
log
.
info
(
sdf
.
format
(
dateBegin
)
+
"开始"
);
...
...
robot-trans-manager/src/test/java/httpclient/system.http
View file @
1620e1e7
...
...
@@ -38,10 +38,20 @@ Content-Disposition: form-data; name="file"; filename="file.zip"
POST {{baseUrl}}/audio/upload
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="test.mp3"
< ./test.mp3
--WebAppBoundary--
###上传音频文件1
POST {{baseUrl}}/audio/upload
Content-Type: multipart/form-data; boundary=WebAppBoundary
--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="test.pcm"
< ./test.pcm
< ./test
1
.pcm
--WebAppBoundary--
###测试链接数据库
...
...
robot-trans-manager/src/test/java/httpclient/test.mp3
0 → 100644
View file @
1620e1e7
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment