Python實戰---製做專屬有聲小說(調用百度語音合成接口)

這一次的目標是使用百度雲的人工智能接口,實現文字轉語音的實時轉換,將小說文字轉換成語音朗讀出來。python

百度雲接口調用

百度的這個接口對於咱們普通用戶很是友好,他的不少功能都是免費的,並且咱們天天能夠免費調用這個接口五千次,很是適合咱們玩轉這些功能。api

註冊百度雲帳號

首先打開百度雲語音合成模塊接口地址
打開網址後點擊《當即使用》選項,而後會出現登陸的選項界面。若是沒有帳號,須要先註冊一個百度雲帳號,註冊方法很是簡單,我就不過多贅述了
登陸帳號以後,會自動進入控制檯界面,由於如今咱們尚未建立應用,這裏顯示的就是0個
app

點擊應用列表,建立應用,彈出的建立應用配置項,其中的內容隨意填寫便可框架

填寫完成,點擊當即建立,返回到應用列表,此時可發現個人應用下多出了一個應用項目人工智能

使用接口

安裝模塊

在python環境下使用該接口必需要安裝模塊3d

pip install baidu-aip

安裝成功可見以下提示
code

生成一段語音

經過查看百度語音合成的技術文檔,能夠發現以下的幾個參數:
blog

將這些參數傳遞到技術文檔所給的框架中,就能夠生成一段語音:接口

from aip import AipSpeech

app_id = '你的Appid'
api_key = '你的API key'
secret_key = '你的 screct key'

client = AipSpeech(app_id,api_key,secret_key)

result = client.synthesis('人生得意須盡歡,莫使金樽空對月','zh','1',
                         {"vol": 9,
                          "spd": 4,
                          "pit": 9,
                          "per": 3,
                         })

with open("audio.mp3","wb") as f:
    f.write(result)

運行完這一段代碼以後,就會在當前文件夾下生成一個audio.mp3的音頻文件,打開以後就是能夠聽到朗誦的詩句ip

小說文字轉語音

在閱讀了技術文檔以後,可知這個模塊最大的限制就是一次轉換的語音不能超過1024字節(大約是512個漢字),因此咱們要進行的第一步操做就是將一篇小說切割成若干個五百字數的文本文檔。
首先我先找到一篇小說,將它複製到文檔中,命名爲read.txt 接下來我準備使用代碼來切割小說內容,一段的字數爲500字
先將小說的內容提取出來,每隔1000個字節(500字)加上「---」的符號做爲切割標誌

with open('read.txt','r') as a:
    text = a.readlines()

for cut in text:
    #以1000個字節的長度進行分割
    text_cut = re.findall('.{1000}', cut)
    text_cut.append(cut[(len(text_cut) * 1000):])
    #在分割後的字符串中間插入"---"
    text_final = '---'.join(text_cut)
#計算文本中有多少個"---"標誌
times = text_final.count('---')

以後將文本以---爲標誌進行分割,並分別將內容賦值到name變量中。正常來講,列表的起始位爲第0位,可是爲了知足咱們的閱讀習慣,因此將這些文本從1開始計數

for n in range(0,times+1):
    name = text_final.split('---')[n]

最後一步,將提取出來的文本內容傳入api接口,輸出語音文件
完整代碼(將三個參數替換成以前申請的內容)

import re
from aip import AipSpeech

app_id = 'id'
api_key = 'APIkey'
secret_key = 'screctkey'

client = AipSpeech(app_id,api_key,secret_key)

with open('read.txt','r') as a:
    text = a.readlines()

for cut in text:
    #以1000個字節的長度進行分割
    text_cut = re.findall('.{1000}', cut)
    text_cut.append(cut[(len(text_cut) * 1000):])
    #在分割後的字符串中間插入"---"
    text_final = '---'.join(text_cut)
#計算文本中有多少個"---"標誌
times = text_final.count('---')
for n in range(0,times+1):
    name = text_final.split('---')[n]
    result = client.synthesis(name, 'zh', '1',
                              {"vol": 9,
                               "spd": 4,
                               "pit": 9,
                               "per": 3,
                               })

    with open('test/' + str(n + 1) + '.mp3', "wb") as d:
        print('正在生成第' + str(n + 1) + '段語音......')
        d.write(result)

實現結果:

打開test文件夾,點擊mp3文件就能夠開始聽小說了

有一說一,這個百度人工智能所裝換的語音很是像有我的在你旁邊給你讀書,體驗感遠超pyttsx3模塊,很是nice! 百度的人工智能接口還有很是多好用的功能,例如人臉識別、語音轉文字、人臉對比......感興趣的同窗能夠本身去探索一下

相關文章
相關標籤/搜索