Android Studio开发中调用华为云语音合成api
该文章基于Android Studio2024.1.2版本,为Android Studio开发者讲解如何调用华为云语音合成api。最终实现的效果是将输入文字利用人工智能合成语音,输出MP3等格式的文件。本文只提供简单的api调用过程,不包含界面设计交互等功能。
该文章基于Android Studio2024.1.2版本,为Android Studio开发者讲解如何调用华为云语音合成api。最终实现的效果是将输入文字利用人工智能合成语音,输出MP3等格式的文件。本文只提供简单的api调用过程,不包含界面设计交互等功能。
一、开通服务
1.注册并登录华为云官网。在上方导航栏中选择“产品”,输入想调用的服务。点击进入。

2.(选做)进入服务的控制台。参照流程指导完成服务开通。对于文字转语音功能来说,第一步准备数据,第二部配置热词表和第三步服务授权可以忽略不记。从第四步开始。我买了18块钱的套餐包之后再进行的调用,不知道免费可不可以用。18元的套餐能用一年一万次左右,还是很划算的。
注意:
1.API可以在线调试,生成测试代码等功能。推荐在使用前先进行在线调试。
2.该页面下方可以查看api使用量。

3.调用服务需要申请自己的ak,sk,region,projectId等值,这些可以按照指引在华为云控制台或者访问密钥界面自己生成。
二、配置环境
1.打开Android Studio,新建项目。
2.把左侧项目结构更改为project类型,找到main文件夹下的AndroidManifest.xml文件,打开。
3.在manifest下添加以下代码,用来获取权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
4.打开左侧项目结构app文件夹下的build.gradle。在dependencies下添加下面内容,用于导入语音合成的本地sdk包。
kotlin格式:
implementation("com.huaweicloud.sdk:huaweicloud-sdk-sis:3.1.124")
java格式:
implementation "com.huaweicloud.sdk:huaweicloud-sdk-sis:3.1.124"
点击上方Sync Now开始下载sdk。下方进度条消失就是下载完成了。
三、
1.在app->src->main->java->(项目名)下新建一个java类。
2.自行修改下方代码的ak,sk,projectId,region等值。
import android.graphics.Region;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ClientRequestException;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.core.http.HttpResponse;
import com.huaweicloud.sdk.sis.v1.region.SisRegion;
import com.huaweicloud.sdk.sis.v1.*;
import com.huaweicloud.sdk.sis.v1.model.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;
public class RunTtsSolution {
// 将Base64字符串转换为文件的方法,对应Python中的base64_to_file函数
public static void base64ToFile(String base64String, String filePath) throws IOException {
byte[] decodedBytes = Base64.getDecoder().decode(base64String);
try (FileOutputStream fos = new FileOutputStream(filePath)) {
fos.write(decodedBytes);
}
}
public static void main(String[] args) {
String ak="填自己的ak";
String sk="填自己的sk";
String projectId="填自己的projectId";
BasicCredentials credentials = new BasicCredentials()
.withAk(ak)
.withSk(sk)
.withProjectId(projectId);
SisClient client = SisClient.newBuilder()
.withCredential(credentials)
.withRegion(SisRegion.valueOf("填自己的region值"))
.build();
try {
RunTtsRequest request = new RunTtsRequest();
TtsConfig configbody = new TtsConfig();
configbody.setAudioFormat(TtsConfig.AudioFormatEnum.valueOf("mp3"));
configbody.setSampleRate(TtsConfig.SampleRateEnum.valueOf("8000"));
configbody.setProperty(TtsConfig.PropertyEnum.valueOf("chinese_xiaoqi_common"));
configbody.setSpeed(10);
configbody.setPitch(10);
configbody.setVolume(50);
PostCustomTTSReq body = new PostCustomTTSReq();
body.setConfig(configbody);
body.setText("填自己的测试文字");
request.setBody(body);
// 发起请求并获取响应
RunTtsResponse response = client.runTts(request);
System.out.println(response);
// 调用方法将响应中的Base64数据转换为文件
//file.mp3就是生成的最终文件名,可以自己修改
base64ToFile(response.getResult().getData(), "file.mp3");
} catch (ClientRequestException e) {
System.out.println(e.getHttpStatusCode());
System.out.println(e.getRequestId());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
} catch (ConnectionException | RequestTimeoutException | ServiceResponseException e) {
e.printStackTrace();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
3.在左侧选择刚刚写的代码,右键,开始运行。
注意:可以选择下图Run...with Coverage选项运行,有时候直接运行会出错。

运行成功结果类似下图

恭喜你完成了api调用!
同时,在你保存项目的文件夹中会生成一个mp3文件,打开后就是生成的语音啦!
更多内容建议查看:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)