Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
d083e445
Commit
d083e445
authored
Dec 02, 2021
by
helinlin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加阿里云音频识别接口
parent
19d62586
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
16 deletions
+46
-16
SpeechTranscriberListener.java
...module/jcs/biz/audioToText/SpeechTranscriberListener.java
+46
-16
No files found.
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/audioToText/SpeechTranscriberListener.java
View file @
d083e445
...
...
@@ -2,12 +2,15 @@ package com.yeejoin.amos.boot.module.jcs.biz.audioToText;
import
com.alibaba.nls.client.protocol.asr.SpeechTranscriberResponse
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.util.StringUtils
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
...
...
@@ -23,7 +26,12 @@ public class SpeechTranscriberListener extends com.alibaba.nls.client.protocol.a
private
final
List
<
AudioRecord
>
audioRecords
;
private
final
AudioKeyWord
audioKeyWords
;
public
SpeechTranscriberListener
(
String
myNumber
,
String
typeNumber
,
EmqKeeper
emqKeeper
,
List
<
AudioRecord
>
audioRecords
,
AudioKeyWord
audioKeyWords
)
{
public
SpeechTranscriberListener
(
String
myNumber
,
String
typeNumber
,
EmqKeeper
emqKeeper
,
List
<
AudioRecord
>
audioRecords
,
AudioKeyWord
audioKeyWords
)
{
this
.
myNumber
=
myNumber
;
this
.
typeNumber
=
typeNumber
;
this
.
emqKeeper
=
emqKeeper
;
...
...
@@ -107,6 +115,12 @@ public class SpeechTranscriberListener extends com.alibaba.nls.client.protocol.a
+
", name: "
+
response
.
getName
()
+
", status: "
+
response
.
getStatus
()
+
",result:"
+
response
.
getTransSentenceText
());
try
{
emqKeeper
.
getMqttClient
().
publish
(
MessageType
.
RECORD
.
getName
()
+
"/"
+
myNumber
,
""
.
getBytes
(),
2
,
true
);
emqKeeper
.
getMqttClient
().
publish
(
MessageType
.
KEYWORD
.
getName
()
+
"/"
+
myNumber
,
""
.
getBytes
(),
2
,
true
);
}
catch
(
MqttException
e
)
{
e
.
printStackTrace
();
}
}
/**
...
...
@@ -154,10 +168,8 @@ public class SpeechTranscriberListener extends com.alibaba.nls.client.protocol.a
public
void
sendRecord
(
AudioRecord
audioRecord
)
{
try
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
emqKeeper
.
getMqttClient
().
publish
(
MessageType
.
RECORD
.
getName
()
+
"/"
+
myNumber
,
objectMapper
.
writeValueAsString
(
audioRecord
).
getBytes
(),
1
,
true
);
byte
[]
bytes
=
objectMapper
.
writeValueAsString
(
audioRecord
).
getBytes
();
emqKeeper
.
getMqttClient
().
publish
(
MessageType
.
RECORD
.
getName
()
+
"/"
+
myNumber
,
bytes
,
2
,
false
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"发送音频识别结果消息异常,原因:"
+
e
.
getMessage
());
...
...
@@ -169,6 +181,7 @@ public class SpeechTranscriberListener extends com.alibaba.nls.client.protocol.a
*/
@Async
public
void
sendKeyword
()
{
audioKeyWords
.
getValues
().
values
().
forEach
(
Set:
:
clear
);
try
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
audioRecords
.
forEach
(
audioRecord
->
{
...
...
@@ -176,7 +189,7 @@ public class SpeechTranscriberListener extends com.alibaba.nls.client.protocol.a
});
String
result
=
stringBuilder
.
toString
();
//寻找电话号码
Pattern
pattern
=
Pattern
.
compile
(
"\\d{5,}
\n
"
);
Pattern
pattern
=
Pattern
.
compile
(
"\\d{5,}"
);
Matcher
matcher
=
pattern
.
matcher
(
result
);
while
(
matcher
.
find
())
{
audioKeyWords
.
getValues
().
get
(
MessageKeywords
.
CONTACT_NUMBER
.
getType
()).
add
(
matcher
.
group
());
...
...
@@ -186,28 +199,45 @@ public class SpeechTranscriberListener extends com.alibaba.nls.client.protocol.a
if
(
messageKeyword
==
MessageKeywords
.
CONTACT_NUMBER
)
continue
;
for
(
String
keyword
:
messageKeyword
.
getKeyword
())
{
int
keywordIndex
=
result
.
indexOf
(
keyword
);
//问答式:截取关键字,从关键字的下一个[,
]号开始截取到下下一个[,
]号结束
//问答式:截取关键字,从关键字的下一个[,
/。]号开始截取到下下一个[,/。
]号结束
if
(
keywordIndex
!=
-
1
)
{
int
keywordIndexNextFlag
=
result
.
indexOf
(
","
,
keywordIndex
);
if
(
keywordIndexNextFlag
==
-
1
)
continue
;
int
keywordIndexNextNextFlag
=
result
.
indexOf
(
","
,
keywordIndexNextFlag
);
if
(
keywordIndexNextNextFlag
==
-
1
)
continue
;
String
keywordValue
=
result
.
substring
(
keywordIndexNextFlag
,
keywordIndexNextNextFlag
);
int
keyWordValueStartIndex
=
getKeyWordValueIndex
(
result
,
keywordIndex
);
if
(
keyWordValueStartIndex
==
-
1
)
continue
;
int
keyWordValueEndIndex
=
getKeyWordValueIndex
(
result
,
keyWordValueStartIndex
);
if
(
keyWordValueEndIndex
==
-
1
)
continue
;
String
keywordValue
=
result
.
substring
(
keyWordValueStartIndex
,
keyWordValueEndIndex
);
if
(
StringUtils
.
isEmpty
(
keywordValue
))
continue
;
audioKeyWords
.
getValues
().
get
(
messageKeyword
.
getType
()).
add
(
keywordValue
);
}
}
}
ObjectMapper
objectMapper
=
new
ObjectMapper
();
byte
[]
bytes
=
objectMapper
.
writeValueAsString
(
audioKeyWords
.
getValues
()).
getBytes
();
emqKeeper
.
getMqttClient
().
publish
(
MessageType
.
KEYWORD
.
getName
()
+
"/"
+
myNumber
,
bytes
,
1
,
true
);
emqKeeper
.
getMqttClient
().
publish
(
MessageType
.
KEYWORD
.
getName
()
+
"/"
+
myNumber
,
bytes
,
2
,
false
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"发送音频关键字消息异常,原因:"
+
e
.
getMessage
());
}
}
private
int
getKeyWordValueIndex
(
String
text
,
int
keywordIndex
)
{
int
keywordIndexNextFlag
=
-
1
;
int
keywordIndexNextFlag1
=
text
.
indexOf
(
","
,
keywordIndex
);
int
keywordIndexNextFlag2
=
text
.
indexOf
(
"。"
,
keywordIndex
);
if
(
keywordIndexNextFlag1
!=
-
1
)
{
if
(
keywordIndexNextFlag2
!=
-
1
)
{
keywordIndexNextFlag
=
Math
.
min
(
keywordIndexNextFlag1
,
keywordIndexNextFlag2
);
}
else
{
keywordIndexNextFlag
=
keywordIndexNextFlag1
;
}
}
else
{
if
(
keywordIndexNextFlag2
!=
-
1
)
{
keywordIndexNextFlag
=
keywordIndexNextFlag2
;
}
}
return
keywordIndexNextFlag
;
}
}
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