赞
踩
1、pom依赖
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.16.18</version>
</dependency>
2、测试的demo
创建语音识别应用
代码中要配置
- package com.zbIntel.integration.utils;
-
- import com.baidu.aip.speech.AipSpeech;
- import com.baidu.aip.util.Util;
- import org.json.JSONObject;
-
- import java.io.IOException;
-
- public class Sample {
- //设置APPID/AK/SK
- public static final String APP_ID = "";
- public static final String API_KEY = "";
- public static final String SECRET_KEY = "";
-
- private static final String FILENAME = "D:\\project\\speech-demo-master\\rest-api-asr\\java\\16k.wav";
-
- public static void main(String[] args) throws IOException {
- // 初始化一个AipSpeech
- AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
-
- // 可选:设置网络连接参数
- client.setConnectionTimeoutInMillis(2000);
- client.setSocketTimeoutInMillis(60000);
-
- // 可选:设置代理服务器地址, http和socket二选一,或者均不设置
- // client.setHttpProxy("proxy_host", proxy_port); // 设置http代理
- // client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理
-
- // 可选:设置log4j日志输出格式,若不设置,则使用默认配置
- // 也可以直接通过jvm启动参数设置此环境变量
- System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");
-
- // 调用接口
- JSONObject res = client.asr("D:\\project\\mygpt\\src\\main\\resources\\iat\\16k_10.pcm", "pcm", 16000, null);
- System.out.println(res.toString(2));
-
-
- // 对本地语音文件进行识别
-
- String path = "D:\\project\\mygpt\\src\\main\\resources\\iat\\16k_10.pcm";
- JSONObject asrRes = client.asr(FILENAME, "pcm", 16000, null);
- System.out.println(asrRes);
-
- // 对语音二进制数据进行识别
- byte[] data = Util.readFileByBytes(path); //readFileByBytes仅为获取二进制数据示例
- JSONObject asrRes2 = client.asr(data, "pcm", 16000, null);
- System.out.println(asrRes2);
-
-
- }
- }

3、创建Service 支持语音转文字
- package com.zbIntel.integration.yuyin;
-
- import com.baidu.aip.speech.AipSpeech;
- import org.json.JSONObject;
- import org.springframework.stereotype.Service;
-
- import java.util.HashMap;
- import java.util.Map;
-
- @Service
- public class BaiduSpeechService {
-
- public static final String APP_ID = "";
- public static final String API_KEY = "";
- public static final String SECRET_KEY = "";
-
- private AipSpeech client;
-
- public BaiduSpeechService() {
- // 设置APPID/API Key/Secret Key
- client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
- }
-
- public Map<String, Object> recognize(String filePath) {
- // 调用百度语音识别接口
-
- client.setConnectionTimeoutInMillis(2000);
- client.setSocketTimeoutInMillis(60000);
-
- HashMap<String, Object> options = new HashMap<>();
- options.put("dev_pid", 1537);
- JSONObject res = client.asr(filePath, "wav", 16000, options);
- Map<String, Object> resultMap = new HashMap<>();
- if (res.get("result") != null) {
- resultMap.put("result", res.get("result"));
- return resultMap;
- }
- return resultMap;
- }
- }

3、创建controller 支持上传音频文件
- package com.zbIntel.integration.controller;
-
- import com.zbIntel.integration.utils.ReturnResult;
- import com.zbIntel.integration.yuyin.BaiduSpeechService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.util.Map;
-
- @RestController
- public class SpeechController {
-
- @Autowired
- private BaiduSpeechService speechService;
-
-
- private static final String UPLOAD_DIR = "/tmp/upload/directory"; // 指定上传文件的保存目录
-
- @PostMapping("/speech/recognize")
- public ReturnResult recognizeSpeech(@RequestParam("file") MultipartFile file) throws IOException {
- // 将上传的文件保存到服务器,调用语音识别服务
- String filePath = saveFile(file);
- try {
- Map<String, Object> text = speechService.recognize(filePath);
- return ReturnResult.ok().data(text);
- } finally {
- // 确保即使识别过程中出现异常,文件也能被删除
- deleteFile(filePath);
- }
- }
-
- private String saveFile(MultipartFile file) throws IOException {
- String fileName = file.getOriginalFilename();
- String filePath = UPLOAD_DIR + File.separator + fileName; // 构建完整的文件路径
- File dest = new File(filePath);
- // 确保目录存在
- if (!dest.getParentFile().exists()) {
- dest.getParentFile().mkdirs();
- }
- try (FileOutputStream outputStream = new FileOutputStream(dest)) {
- outputStream.write(file.getBytes());
- }
- return filePath;
- }
-
- private void deleteFile(String filePath) {
- try {
- Files.delete(Paths.get(filePath));
- } catch (IOException e) {
- // 记录日志或者处理删除失败的情况
- System.err.println("Failed to delete file: " + filePath);
- e.printStackTrace();
- }
- }
-
- }

4、创建页面 支持 录音 上报 音频文件 等 待开展
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。