<dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.12.0</version> </dependency>application.properties引入:
# =================================== # 堆代码 duidaima.com # 百度人工智能,申请百度云账号并创建应用 # =================================== bai-du.appId = ********** bai-du.apiKey = ********** bai-du.accessKeySecret = ********** BaiDuProperties.java 配置实体: @Data @ConfigurationProperties(prefix = "bai-du") public class BaiDuProperties { private String appId; private String apiKey; private String accessKeySecret; }撸一个工具类:
/** * 百度智能AI */ @Component @Configuration @EnableConfigurationProperties({BaiDuProperties.class}) public class BaiDuUtils { private BaiDuProperties baiDu; public BaiDuUtils(BaiDuProperties baiDu) { this.baiDu = baiDu; } private AipSpeech instance; @Value("${file.path}") private String filePath; @PostConstruct public void init() { try { FileUtil.mkdir(filePath+SystemConstant.SF_FILE_SEPARATOR+"voice"); instance = new AipSpeech(baiDu.getAppId(), baiDu.getApiKey(), baiDu.getAccessKeySecret()); // 可选:设置网络连接参数 instance.setConnectionTimeoutInMillis(2000); instance.setSocketTimeoutInMillis(60000); } catch (Exception e) { e.printStackTrace(); } } /** * 语音合成 * 本地测试可能会出现https认证的问题 调用一下 ignoreSsl 方法即可 * @param text 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节 */ public String text2Voice(String text,Boolean per) { SslUtils.ignoreSsl(); HashMap<String, Object> options = new HashMap<>(); if(per){ options.put("per", "3"); }else{ options.put("per", "4"); } TtsResponse res = instance.synthesis(text, "zh", 1, options); byte[] data = res.getData(); if (data != null) { try { String file = "voice"+SystemConstant.SF_FILE_SEPARATOR+UUID.randomUUID()+".mp3"; Util.writeBytesToFileSystem(data, filePath + SystemConstant.SF_FILE_SEPARATOR + file); return file; } catch (IOException e) { e.printStackTrace(); } } return null; } }注意:
2.本地测试可能会出现https认证的问题 调用一下 ignoreSsl 方法即可
效果图: