该文章基于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文件,打开后就是生成的语音啦!

更多内容建议查看:

语音合成_语音交互服务 SIS_华为云 (huaweicloud.com)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐