栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分享一款文字转语音工具箱

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分享一款文字转语音工具箱

前言

语音合成可将计算机自己产生的、或外部输入的文字信息转变为可以听得懂的、流利的口语输出的技术。适用于手机APP、儿童故事机、智能机器人等多种应用场景。

整合

这里我们使用百度云的人工智能语音合成API,个人用户拥有一定的免费额度,基本已经够用了,在线语音合成支持丰富的SDK,基本上流行的语言都可以轻松接入。这里使用世界上最流行的语言Java。

pom.xml引入:


	com.baidu.aip
	java-sdk
	4.12.0

application.properties引入:

# ===================================
# 百度人工智能,申请百度云账号并创建应用
# ===================================
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;

}

撸一个工具类:

@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();
 }
    }

    
    public String text2Voice(String text,Boolean per) {
 SslUtils.ignoreSsl();
 HashMap 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;
    }
}
注意
  • 请注意文本长度必须小于1024字节

  • 本地测试可能会出现https认证的问题 调用一下 ignoreSsl 方法即可

截图

在线演示

https://speech.52itstyle.vip

源码

https://gitee.com/52itstyle/spring-boot-tools

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/237023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号