java应用之文字转语音

最近做的语音播报功能,文字转语音的实现。

一、pom.xml引入jar包依赖

<dependency>

 <groupId>com.hynnet</groupId>

 <artifactId>jacob</artifactId>

 <version>1.18</version>

</dependency>

二、把jacob-1.18-x64.dll文件放到jdk的bin目录下。

链接:https://pan.baidu.com/s/1bF_qVMuoe7vsuiMqJ52qAg     提取码:mpsw 

三、测试运行

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

/**
 * 文字转语音测试
 * 
 * @author rxf
 * @date: 20200804
 */
public class jacobtest {

  /**
   * 语音转文字并播放
   * 
   * @param txt
   */
  public static void textToSpeech(String text) {
    ActiveXComponent ax = null;
    try {
      ax = new ActiveXComponent("Sapi.SpVoice");

      // 运行时输出语音内容
      Dispatch spVoice = ax.getObject();
      // 音量 0-100
      ax.setProperty("Volume", new Variant(100));
      // 语音朗读速度 -10 到 +10
      ax.setProperty("Rate", new Variant(-2));
      // 执行朗读
      Dispatch.call(spVoice, "Speak", new Variant(text));

      // 下面是构建文件流把生成语音文件

      ax = new ActiveXComponent("Sapi.SpFileStream");
      Dispatch spFileStream = ax.getObject();

      ax = new ActiveXComponent("Sapi.SpAudioFormat");
      Dispatch spAudioFormat = ax.getObject();

      // 设置音频流格式
      Dispatch.put(spAudioFormat, "Type", new Variant(22));
      // 设置文件输出流格式
      Dispatch.putRef(spFileStream, "Format", spAudioFormat);
      // 调用输出 文件流打开方法,创建一个.wav文件
      Dispatch.call(spFileStream, "Open", new Variant("./text.wav"), new Variant(3), new Variant(true));
      // 设置声音对象的音频输出流为输出文件对象
      Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream);
      // 设置音量 0到100
      Dispatch.put(spVoice, "Volume", new Variant(100));
      // 设置朗读速度
      Dispatch.put(spVoice, "Rate", new Variant(-2));
      // 开始朗读
      Dispatch.call(spVoice, "Speak", new Variant(text));

      // 关闭输出文件
      Dispatch.call(spFileStream, "Close");
      Dispatch.putRef(spVoice, "AudioOutputStream", null);

      spAudioFormat.safeRelease();
      spFileStream.safeRelease();
      spVoice.safeRelease();
      ax.safeRelease();

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  
  public static void main(String args[]) {
     //客户要求在请字后面停顿,经多次尝试后顿号可实现需求
	  textToSpeech("请、66号客户到5号窗口办理业务");
    
  }
}

 

您可以使用阿里云的语音合成服务来实现Java文字转语音的功能。以下是基本步骤: 1. 登录阿里云控制台,进入语音合成服务页面,创建一个语音合成应用,获取accessKeyId和accessKeySecret。 2. 下载并引入阿里云提供的Java SDK,配置accessKeyId和accessKeySecret。 3. 调用SDK提供的方法,设置需要转换的文本内容和音频格式等参数,调用语音合成接口,获取语音文件。 4. 播放语音文件或保存语音文件到本地。 以下是一个简单的示例代码: ``` import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.green.model.v20170112.VoiceIdentityCheckRequest; import com.aliyuncs.green.model.v20170112.VoiceIdentityCheckResponse; import com.aliyuncs.green.model.v20170112.VoiceIdentityUnbindRequest; import com.aliyuncs.green.model.v20170112.VoiceIdentityUnbindResponse; import com.aliyuncs.green.model.v20170112.VoiceStartCheckRequest; import com.aliyuncs.green.model.v20170112.VoiceStartCheckResponse; import com.aliyuncs.green.model.v20170112.VoiceStartRegisterRequest; import com.aliyuncs.green.model.v20170112.VoiceStartRegisterResponse; import com.aliyuncs.green.model.v20170112.VoiceSubmitRequest; import com.aliyuncs.green.model.v20170112.VoiceSubmitResponse; import com.aliyuncs.http.MethodType; public class AliyunVoiceSDKSample { /** * accessKeyId和accessKeySecret是阿里云账号的访问密钥,可以在阿里云控制台的AccessKey管理页面创建和查看。 * 访问密钥信息需要严格保密,只有获得者才能访问阿里云资源和API,请勿泄露。 */ private static final String ACCESS_KEY_ID = "<your_access_key_id>"; private static final String ACCESS_KEY_SECRET = "<your_access_key_secret>"; public static void main(String[] args) { // 创建DefaultAcsClient实例并配置Endpoint DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_ID, ACCESS_KEY_SECRET); DefaultAcsClient client = new DefaultAcsClient(profile); // 创建VoiceStartRegisterRequest并设置参数 VoiceStartRegisterRequest request = new VoiceStartRegisterRequest(); request.setMethod(MethodType.POST); request.setIdentityType(1); // 设置身份类型,1为手机号码 request.setIdentity("13800000000"); // 设置手机号码 request.setBizType("default"); // 设置业务类型 request.setSource("default"); // 设置注册来源 try { // 调用VoiceStartRegister接口进行语音验证码注册 VoiceStartRegisterResponse response = client.getAcsResponse(request); String registerId = response.getRegisterId(); // 获取注册ID // 创建VoiceStartCheckRequest并设置参数 VoiceStartCheckRequest checkRequest = new VoiceStartCheckRequest(); checkRequest.setMethod(MethodType.POST); checkRequest.setIdentityType(1); // 设置身份类型,1为手机号码 checkRequest.setIdentity("13800000000"); // 设置手机号码 checkRequest.setBizType("default"); // 设置业务类型 checkRequest.setSource("default"); // 设置注册来源 checkRequest.setRegisterId(registerId); // 设置注册ID // 调用VoiceStartCheck接口进行语音验证 VoiceStartCheckResponse checkResponse = client.getAcsResponse(checkRequest); String checkCode = checkResponse.getCheckCode(); // 获取语音验证码 // 提交语音验证码 VoiceSubmitRequest submitRequest = new VoiceSubmitRequest(); submitRequest.setMethod(MethodType.POST); submitRequest.setIdentityType(1); // 设置身份类型,1为手机号码 submitRequest.setIdentity("13800000000"); // 设置手机号码 submitRequest.setCheckCode(checkCode); // 设置语音验证码 submitRequest.setBizType("default"); // 设置业务类型 submitRequest.setSource("default"); // 设置注册来源 // 调用VoiceSubmit接口提交语音验证码 VoiceSubmitResponse submitResponse = client.getAcsResponse(submitRequest); boolean success = submitResponse.getSuccess(); // 获取提交结果 if (success) { System.out.println("语音验证码验证成功!"); } else { System.out.println("语音验证码验证失败!"); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } } ``` 注意:以上示例代码仅为演示语音验证码注册和验证的流程,具体的文字转语音功能实现需要参考阿里云语音合成服务的API文档,并按照文档说明调用相关接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值