1、首先去阿里云官网申请语音服务, 拿到AK权限(这里看官方操作流程就好了 ),这里我们使用的是文字模板转语音提醒的功能(官方的案例是拿语音文件进行语音提醒),定义好模板里面的参数 ${param}

2、导入以下Maven依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dyvmsapi</artifactId>
<version>1.2.2</version>
</dependency>
3、在yml文件中写自己的阿里云AK参数(前三个参数基本上都差不多的, 除了最后两个)
oss:
product: Dyvmsapi
domain: dyvmsapi.aliyuncs.com
endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: XXXXXXXXXXXXX
accessKeySecret: XXXXXXXXXXXXXXXXX
4、Java调用阿里云语音服务接口的代码
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dyvmsapi.model.v20170525.SingleCallByTtsRequest;
import com.aliyuncs.dyvmsapi.model.v20170525.SingleCallByTtsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
public class VoiceNotificationApi {
@Value("${oss.product}")
private String product;
@Value("${oss.domain}")
private String domain;
@Value("${oss.accessKeyId}")
private String accessKeyId;
@Value("${oss.accessKeySecret}")
private String accessKeySecret;
public SingleCallByTtsResponse sendCVoice(String phone, String visitorName, String address) throws ClientException{
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
SingleCallByTtsRequest request = new SingleCallByTtsRequest();
request.setCalledShowNumber("XXXXXXXXXX");
request.setCalledNumber(phone);
request.setTtsCode("XXXXXXXXXXXXXXXX");
request.setTtsParam("{\"visitorName\":\"" + visitorName +"\", \"address\":\"" + address + "\"}");
request.setVolume(200);
request.setPlayTimes(2);
SingleCallByTtsResponse singleCallByTtsResponse = acsClient.getAcsResponse(request);
if(singleCallByTtsResponse.getCode() != null && singleCallByTtsResponse.getCode().equals("OK")) {
LogUtil.info("processing sendCVoice success!RequestId = %s , Code = %s , phone = %s",
singleCallByTtsResponse.getRequestId(), singleCallByTtsResponse.getCode(), phone);
}
return singleCallByTtsResponse;
}
}