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
5466a93e
Commit
5466a93e
authored
Nov 30, 2021
by
helinlin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加阿里云音频识别demo
parent
380a87d9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
99 additions
and
32 deletions
+99
-32
AppNslClient.java
.../main/java/com/yeejoin/amos/speech/util/AppNslClient.java
+92
-0
HttpUtil.java
.../src/main/java/com/yeejoin/amos/speech/util/HttpUtil.java
+1
-7
SpeechConfig.java
.../main/java/com/yeejoin/amos/speech/util/SpeechConfig.java
+2
-17
SpeechFlashRecognizerDemo.java
...m/yeejoin/amos/speech/util/SpeechFlashRecognizerDemo.java
+2
-6
SpeechRecognizerDemo.java
...va/com/yeejoin/amos/speech/util/SpeechRecognizerDemo.java
+2
-2
SpeechTranscriberDemo.java
...a/com/yeejoin/amos/speech/util/SpeechTranscriberDemo.java
+0
-0
No files found.
amos-boot-utils/amos-boot-utils-speech/src/main/java/com/yeejoin/amos/speech/util/AppNslClient.java
0 → 100644
View file @
5466a93e
package
com
.
yeejoin
.
amos
.
speech
.
util
;
import
com.alibaba.nls.client.AccessToken
;
import
com.alibaba.nls.client.protocol.NlsClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.IOException
;
import
static
com
.
yeejoin
.
amos
.
speech
.
util
.
SpeechConfig
.
AccessKeId
;
import
static
com
.
yeejoin
.
amos
.
speech
.
util
.
SpeechConfig
.
AccessKeySecret
;
/**
* 阿里云nlsClient语音识别客户端
* 应用全局创建一个NlsClient实例,默认服务地址为阿里云线上服务地址,默认值:wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1
*/
public
class
AppNslClient
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AppNslClientToken
.
class
);
private
volatile
static
NlsClient
nlsClient
;
private
AppNslClient
()
{
}
public
static
NlsClient
instance
()
{
if
(
nlsClient
==
null
)
{
synchronized
(
NlsClient
.
class
)
{
if
(
nlsClient
==
null
)
{
logger
.
warn
(
"AppNslClient语音识别客户端为空,开始创建..."
);
nlsClient
=
new
NlsClient
(
AppNslClientToken
.
instance
().
getToken
());
return
nlsClient
;
}
}
}
//设置访问token
nlsClient
.
setToken
(
AppNslClientToken
.
instance
().
getToken
());
return
nlsClient
;
}
}
/**
* AppNslClientToken
*/
class
AppNslClientToken
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AppNslClientToken
.
class
);
private
volatile
static
AccessToken
accessToken
;
private
static
long
getTokenTime
;
private
AppNslClientToken
()
{
}
public
static
AccessToken
instance
()
{
if
(
accessToken
==
null
)
{
synchronized
(
NlsClient
.
class
)
{
if
(
accessToken
==
null
)
{
logger
.
warn
(
"token为空,开始获取token..."
);
accessToken
=
getAccessToken
();
getTokenTime
=
System
.
currentTimeMillis
();
}
}
}
//token过期自更新
if
(
getTokenTime
+
accessToken
.
getExpireTime
()
<=
System
.
currentTimeMillis
())
{
logger
.
warn
(
"token已过期,开始重新获取..."
);
accessToken
=
getAccessToken
();
getTokenTime
=
System
.
currentTimeMillis
();
}
else
{
long
time
=
getTokenTime
+
accessToken
.
getExpireTime
()
-
System
.
currentTimeMillis
();
logger
.
warn
(
"token过期还剩:"
+
"("
+
time
/
(
1000
*
60
*
60
*
24
)
+
"天)"
);
}
return
accessToken
;
}
/**
* 获取访问Token,包含token和过期时间(2021-11-30测试Token过期时间为18天)
* 集成项目中,token放到缓存中,避免多次获取可能导致已进行的任务token失效
*
* @return token 访问token
*/
private
static
AccessToken
getAccessToken
()
{
AccessToken
accessToken
=
new
AccessToken
(
AccessKeId
,
AccessKeySecret
);
try
{
accessToken
.
apply
();
logger
.
warn
(
"获取到最新的token: "
+
accessToken
.
getToken
()
+
", 过期时间: "
+
accessToken
.
getExpireTime
()
+
"("
+
accessToken
.
getExpireTime
()
/
(
1000
*
60
*
60
*
24
)
+
"天)"
);
return
accessToken
;
}
catch
(
IOException
e
)
{
logger
.
error
(
"获取语音识别客户端token失败!原因:"
+
e
.
getMessage
());
throw
new
RuntimeException
(
"获取语音识别客户端token失败!原因:"
+
e
.
getMessage
());
}
}
}
amos-boot-utils/amos-boot-utils-speech/src/main/java/com/yeejoin/amos/speech/util/HttpUtil.java
View file @
5466a93e
...
...
@@ -22,13 +22,7 @@ public class HttpUtil {
.
build
();
public
static
String
sendPostFile
(
String
url
,
HashMap
<
String
,
String
>
headers
,
File
speechFile
)
{
RequestBody
body
;
if
(!
speechFile
.
isFile
())
{
System
.
err
.
println
(
"The filePath is not a file: "
+
speechFile
.
getPath
());
return
null
;
}
else
{
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/octet-stream"
),
speechFile
);
}
RequestBody
body
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/octet-stream"
),
speechFile
);
Headers
.
Builder
hb
=
new
Headers
.
Builder
();
if
(
headers
!=
null
&&
!
headers
.
isEmpty
())
{
for
(
Map
.
Entry
<
String
,
String
>
entry
:
headers
.
entrySet
())
{
...
...
amos-boot-utils/amos-boot-utils-speech/src/main/java/com/yeejoin/amos/speech/util/Speech
Util
.java
→
amos-boot-utils/amos-boot-utils-speech/src/main/java/com/yeejoin/amos/speech/util/Speech
Config
.java
View file @
5466a93e
package
com
.
yeejoin
.
amos
.
speech
.
util
;
import
com.alibaba.nls.client.AccessToken
;
import
java.io.IOException
;
/**
* 阿里云语音识别
* <p>
...
...
@@ -23,23 +19,12 @@ import java.io.IOException;
* 商用版按每自然日使用量计费,无免费额度,不使用则不产生费用。北京时间每日24时,系统将自动对当日用量进行全量计算并计费,账单生成将稍有延迟。
* 开通商用版后,不建议再次降配为试用版。商用版降配试用版后,可用并发数将置为0,服务将无法继续使用。
*/
public
class
Speech
Util
{
public
class
Speech
Config
{
/**
* 测试信息
* 测试信息
,可在阿里云上配置
*/
public
static
final
String
AccessKeId
=
"LTAI5t7mGN6dYoCwMdKiLTgt"
;
public
static
final
String
AccessKeySecret
=
"0LYdEnvKzQxBg0lpIahDp5rzB2r4Dp"
;
public
static
final
String
AppKey
=
"EG5fJBBIqkNMj6bM"
;
/**
* 获取访问Token(测试Token过期时间为18天)
*
* @return token
*/
public
static
String
getToken
()
throws
IOException
{
AccessToken
accessToken
=
new
AccessToken
(
AccessKeId
,
AccessKeySecret
);
accessToken
.
apply
();
System
.
out
.
println
(
"get token: "
+
accessToken
.
getToken
()
+
", expire time: "
+
accessToken
.
getExpireTime
());
return
accessToken
.
getToken
();
}
}
amos-boot-utils/amos-boot-utils-speech/src/main/java/com/yeejoin/amos/speech/util/SpeechFlashRecognizerDemo.java
View file @
5466a93e
...
...
@@ -29,11 +29,7 @@ public class SpeechFlashRecognizerDemo {
String
format
=
"mp3"
;
int
sampleRate
=
16000
;
SpeechFlashRecognizerDemo
demo
=
new
SpeechFlashRecognizerDemo
(
new
File
(
fileName
));
try
{
demo
.
process
(
SpeechUtil
.
getToken
(),
format
,
sampleRate
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
demo
.
process
(
AppNslClientToken
.
instance
().
getToken
(),
format
,
sampleRate
);
}
public
SpeechFlashRecognizerDemo
(
File
speechFile
)
{
...
...
@@ -49,7 +45,7 @@ public class SpeechFlashRecognizerDemo {
*/
public
void
process
(
String
token
,
String
format
,
int
sampleRate
)
{
String
request
=
"https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/FlashRecognizer"
;
request
=
request
+
"?appkey="
+
Speech
Util
.
AppKey
;
request
=
request
+
"?appkey="
+
Speech
Config
.
AppKey
;
request
=
request
+
"&token="
+
token
;
request
=
request
+
"&format="
+
format
;
request
=
request
+
"&sample_rate="
+
sampleRate
;
...
...
amos-boot-utils/amos-boot-utils-speech/src/main/java/com/yeejoin/amos/speech/util/SpeechRecognizerDemo.java
View file @
5466a93e
...
...
@@ -88,7 +88,7 @@ public class SpeechRecognizerDemo {
e
.
printStackTrace
();
}
// 创建DefaultAcsClient实例并初始化
DefaultProfile
profile
=
DefaultProfile
.
getProfile
(
REGIONID
,
Speech
Util
.
AccessKeId
,
SpeechUtil
.
AccessKeySecret
);
DefaultProfile
profile
=
DefaultProfile
.
getProfile
(
REGIONID
,
Speech
Config
.
AccessKeId
,
SpeechConfig
.
AccessKeySecret
);
this
.
client
=
new
DefaultAcsClient
(
profile
);
}
...
...
@@ -113,7 +113,7 @@ public class SpeechRecognizerDemo {
*/
JSONObject
taskObject
=
new
JSONObject
();
// 设置appkey
taskObject
.
put
(
KEY_APP_KEY
,
Speech
Util
.
AppKey
);
taskObject
.
put
(
KEY_APP_KEY
,
Speech
Config
.
AppKey
);
// 设置音频文件访问链接
taskObject
.
put
(
KEY_FILE_LINK
,
fileLink
);
// 新接入请使用4.0版本,已接入(默认2.0)如需维持现状,请注释掉该参数设置。
...
...
amos-boot-utils/amos-boot-utils-speech/src/main/java/com/yeejoin/amos/speech/util/SpeechTranscriberDemo.java
View file @
5466a93e
This diff is collapsed.
Click to expand it.
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