使用腾讯语音合成技术生成有声书

  背景:不知是否在博客园看到的腾讯云平台广告,被AI接口几个项目吸引住了,其中有个   语音合成  接口在这里安利一下,还挺好玩。这个接口提供将一段文字转换成语音的功能,支持中文、英文,遗憾的是暂时无法通过自己的声音进行训练,推出自己独有声音的音频文件:) 不过总体来说,还是相当不错啦,附件中是我用这个接口转换的样例音频文件。

DEMO实测,代码案例简单概述:

首先,调用接口肯定得申请appkey,secrect等一堆东西,在这里申请

申请,完成后会获得公共请求参数必须的信息,然后接口调用分为直接http请求与使用官方版本的sdk调用2种方式,建议使用sdk调用的方式,避免还得自己加sign。sdk调用的方式很简单,测试demo如下:

 @Test
    public void testAi() throws TencentCloudSDKException, IOException, UnsupportedAudioFileException, LineUnavailableException {
        Credential cred = new Credential("你的ID", "你的key");

        AaiClient aaiClient = new AaiClient(cred, "ap-beijing");
        TextToVoiceRequest request = new TextToVoiceRequest();
        request.setProjectId(10144947);
        request.setModelType(1);
        request.setPrimaryLanguage(1);
//        request.setSampleRate();
        request.setSessionId("testsessionid");
        request.setSpeed(1F);
        request.setText("你好啊,你爱我么");
        request.setVoiceType(1);
        request.setVolume(1F);
        TextToVoiceResponse textToVoiceResponse = aaiClient.TextToVoice(request);
        String audio = textToVoiceResponse.getAudio();

        if (!StringUtils.isEmpty(audio)) {
            System.out.println(audio);

            BASE64Decoder decoder = new BASE64Decoder();
            try {
                byte[] data = decoder.decodeBuffer(audio);
                OutputStream out = new FileOutputStream("d://test1.wav");
                out.write(data);
                out.flush();
                out.close();
            } catch (Exception ex) {

            }
        }
    }

本人喜欢在喜马拉雅上听书,也听小说。看到有很多连普通话都不甚标准的作者有了大量的粉丝,还有打赏。在此我有了一个大胆的想法,在不涉及版权问题的前提下,我是否可以上传一大堆小说的音频内容,以量取胜,。实际测试中发现腾讯语音合成接口默认只支持300个字符,且生成的音频文件为BASE64的String字符串,需要进行拼接转换。拼接转换部分源码如下:

 @Scheduled(fixedDelay = 1000 * 60 * 60)
    public void toVoice() {
        String textFilePath="D://work/mywork/txt/孙子兵法/计篇.txt";
        String outputPath="D://work/mywork/voice/孙子兵法/计篇.wav";
        try {
            File output=new File(outputPath);
            logger.info("开始获取文件内文本数据");
            List<String> stringArray = fileManService.getStringArray(textFilePath, 100);
            if (stringArray != null) {
                List<String> voiceWaves=new ArrayList<String>();
                for(String tmpText :stringArray)
                {
                    voiceWaves.add(voiceManService.getWavString(tmpText));
                }
                WavBaseStringMergeUtil wavBaseStringMergeUtil=new WavBaseStringMergeUtil();
                File file=new File(outputPath);
                wavBaseStringMergeUtil.mergeWav(voiceWaves,file);
                logger.info("完成");
            } else {
                logger.info("获取到的文本内容为空");
            }

        } catch (Exception e) {
            logger.error("转换出现异常", e);
        }
    }

至此,基本可以满足咱们转换小说的需要啦!!!今天也上传了第一套专辑《孙子兵法》 到喜马拉雅试试水,大家有感兴趣的可以去听一下语音合成的效果,如果给您带来帮助请不要吝惜动下手指 帮忙点赞哟!

代码、文字文本交流可以私信也可以评论中留言,

想听书的再也不用担心每书可听了,有想听书的朋友可以私信我有版权的文本内容,帮你转换哦。走路、吃饭、开车,想听就听……

原文地址:https://www.cnblogs.com/falcon-fei/p/9461423.html

时间: 2024-08-05 19:36:16

使用腾讯语音合成技术生成有声书的相关文章

Android 讯飞语音之语音合成(在线有声朗读)

在线语音合成的使用方法: 首先下载相关的sdk,这个网址里有多种版本,我选择的Android. http://open.voicecloud.cn/index.php/services/voicebase?type=tts&tab_index=1 需要注意的是,最好先创建应用,审核通过后会返回一个APPID号,这个号在开发时会使用. 下载并解压后如图: 其中,doc中是相关文档,libs中是待会儿要导入的语音包,sample中是自带的Demo,大家可以看看. 下面我们通过实例来简单的使用在线语音

如何使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(4)

控制:我们必须学会控制 大师尤达(电影<星球大战>)曾有言:关键在于控制.这本故事书是一个词一个词地念出来的,我准备为它增加两个按钮,这样我们就可以实时地调整语音合成时的音高和语速. 仍然是 RWTPageViewController.m,在nextSpeechIndex 属性后声明下列属性: @property (nonatomic, assign) float currentPitchMultiplier; @property (nonatomic, assign) float curre

python腾讯语音合成

一.腾讯语音合成介绍 腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话. 腾讯TTS技术可以应用到很多场景,比如,移动APP语音播报新闻:智能设备语音提醒:依靠网上现有节目或少量录音,快速合成明星语音,降低邀约成本:支持车载导航语音合成的个性化语音播报.(废话一大堆)... 二.腾讯语音合成python SDK文档 安装 Python SDK 前,先获取安全凭证.在第一次使用云 API 之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括 SecretID

velocity模板技术生成word文档

本文介绍采用velocity技术在Java中生成word文档的方法. 1.新建一个word文档,编辑内容如下: 2.将上述word文档另存为htm格式的文件 3.新建一个Java Project项目velocityTest,加入Velocity所依赖的Jar包velocity-dep-1.5-beta2.jar. 4.在src目录下新建一个velocity.vm文件,将第二步生成的velocity.htm用文本编辑器打开,复制内容到velocity.vm中.内容如下: <html xmlns:v

Java中动态代理技术生成的类与原始类的区别 (转)

用动态代理的时候,对它新生成的类长什么样子感到好奇.有幸通过一些资料消除了心里的疑惑. 平时工作使用的Spring框架里面有一个AOP(面向切面)的机制,只知道它是把类重新生成了一遍,在切面上加上了后来定义的逻辑.这样就达到了动态的在原有类上增加一些功能.比如日志打印,拦截信息等. 这里只关心动态代理技术生成新的类,先不管虚拟机是如何去生成类,用了什么字节码生成技术,怎么产生字节码等这一系列动作.现在只关心最后生成的新类长什么样,它和老类有什么区别.为了获取到生成后的代理类的字节码并且反编译成我

如何使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(1)

原文: http://www.raywenderlich.com/64623/make-narrated-book-using-avspeechsynthesizer-ios-7 随着 PageViewController 的引入,苹果让开发者们制作图书类app 更加轻松.不幸的是,对于生活在朝九晚五繁忙节奏中的人们来说,阅读也是一件奢侈的事情.为什么你不能在读一本小说的同时做其他事情呢? 在 Siri 刚开始出现的时候,苹果曾经用复杂的动态文本阅读将开发者拒之门外,但当iOS7 发布的时候,苹

如何使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(2)

切分语句 软件工程的一条定律是数据和代码分离.这样做会使代码更易于测试,即使输入的数据发生改变,你的代码也能够允许.甚至于,程序能在运行中实时下载新的数据.如果程序能在运行中下载新书岂不是更好? 你现在用的书是用 Book.testBook 方法中的代码创建的.接下来我们将书改为以文件形式存储,读取的时候则通过Plist 文件来读取. 打开 SupportingFiles\WhirlySquirrelly.plist ,其内容如下: 你还可以通过右键->"Open As\Source Co

如何使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(3)

plist 中的每一页 utteranceSting 我们都创建了一个RWTPage.displayText.因此,每页的文本会一次性地显示出来. 由于 You've constructedeach RWTPage.displayTextfrom the combined utteranceStringsfor the page in the plist. So, your page view displays the entire page's text.However, remember t

怎样使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(2)

切分语句 软件project的一条定律是数据和代码分离.这样做会使代码更易于測试,即使输入的数据发生改变,你的代码也能够同意.甚至于,程序能在执行中实时下载新的数据.假设程序能在执行中下载新书岂不是更好? 你如今用的书是用 Book.testBook 方法中的代码创建的.接下来我们将书改为以文件形式存储,读取的时候则通过Plist 文件来读取. 打开 SupportingFiles\WhirlySquirrelly.plist ,其内容例如以下: 你还能够通过右键->"Open As\So