使用騰訊語音合成技術生成有聲書
阿新 • • 發佈:2018-08-12
ise 調用接口 enc 廣告 get stream mar cer decode
背景:不知是否在博客園看到的騰訊雲平臺廣告,被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); } }
至此,基本可以滿足咱們轉換小說的需要啦!!!今天也上傳了第一套專輯《孫子兵法》 到喜馬拉雅試試水,大家有感興趣的可以去聽一下語音合成的效果,如果給您帶來幫助請不要吝惜動下手指 幫忙點贊喲!
代碼、文字文本交流可以私信也可以評論中留言,
想聽書的再也不用擔心每書可聽了,有想聽書的朋友可以私信我有版權的文本內容,幫你轉換哦。走路、吃飯、開車,想聽就聽……
使用騰訊語音合成技術生成有聲書