
小編今天跟大家分享的這篇文章是關(guān)于python語音識(shí)別的,語音識(shí)別是人工智能研究的重要領(lǐng)域。希望這篇文章能對(duì)大家python學(xué)習(xí)和使用有所幫助。
文章來源: 飯飯的Python學(xué)習(xí)之路
作者: 一粒米飯
總的來說,語音合成是通過機(jī)械的、電子的方法產(chǎn)生人造語音的技術(shù)。其中TTS,是Text-To-Speech縮寫,即“從文本到語音”,是人機(jī)對(duì)話的一部分。它屬于語音合成,是將計(jì)算機(jī)自己產(chǎn)生的、或外部輸入的文字信息轉(zhuǎn)變?yōu)榭梢月牭枚?、流利的語音輸出的技術(shù)。本文中提到的語音合成是指TTS。生活中用到的林志玲導(dǎo)航、郭德綱導(dǎo)航等就是基于TTS實(shí)現(xiàn)。
這里簡(jiǎn)單論述下語音合成的傳統(tǒng)方法以及近年來基于深度學(xué)習(xí)的合成方法,對(duì)這部分不感興趣的同學(xué)可以直接跳過,不影響后面閱讀。
傳統(tǒng)方法
語音合成的傳統(tǒng)方法可分為拼接和參數(shù)化兩種。
基于深度學(xué)習(xí)的方法
今年來隨著神經(jīng)網(wǎng)絡(luò)的不斷發(fā)展,深度學(xué)習(xí)技術(shù)在語音合成方面也有著廣泛的應(yīng)用,大致包含以下幾個(gè)方向:
用Python來進(jìn)行語音合成的方法有很多,這里通過比較幾個(gè)典型的開源庫和國內(nèi)語音平臺(tái)供同學(xué)們參考。由于谷歌的服務(wù)無法直接使用,故不在比較列表中,另外windows上特有的語音合成方法也不在范圍內(nèi)。
是一個(gè)開源的離線語音合成庫,只要用pip安裝后即可使用,安裝命令如下:
$ pip install pyttsx3
優(yōu)點(diǎn):免費(fèi),使用簡(jiǎn)單
缺點(diǎn):合成語音效果一般
2.科大訊飛科大訊飛提供豐富的發(fā)音類別來合成有特殊的語音,通過api接口進(jìn)行語音合成,并且可以對(duì)多音字、靜音停頓、數(shù)字、英文讀法等提供了控制標(biāo)記。
優(yōu)點(diǎn):語音合成效果較好,可以靈活控制多音字、靜音、英文等讀法。缺點(diǎn):免費(fèi)使用接口有500次的限制,在實(shí)際使用經(jīng)常不夠用。
3.騰訊
騰訊有多個(gè)平臺(tái)在提供語音合成接口,包括騰訊AI實(shí)驗(yàn)室、騰訊優(yōu)圖、騰訊云。其中騰訊AI開放平臺(tái)合成效果一般;騰訊優(yōu)圖目前免費(fèi)試用,且不限制請(qǐng)求次數(shù),但不保證QPS;騰訊云語音合成效果也不錯(cuò),合成免費(fèi)額度為每月100萬字符,相當(dāng)于一本《西游記》的字?jǐn)?shù)。每月1日重置免費(fèi)額度,一般情況下也夠用了。
優(yōu)點(diǎn):選擇多,其中騰訊優(yōu)圖和騰訊云語音合成效果較好
缺點(diǎn):無法控制多音字讀法、數(shù)字讀法、英文讀法和停頓
4.阿里云阿里云語音合成接口當(dāng)前改成了websocket請(qǐng)求方式,按次數(shù)進(jìn)行收費(fèi)。
優(yōu)點(diǎn):語音合成效果較好,語音模型豐富。
缺點(diǎn):正式產(chǎn)品使用的話還是要花錢。
5.百度
支持在線語音合成和離線語音合成。離線語音合成在個(gè)人認(rèn)證后只能在兩臺(tái)終端上使用,在線語音合成有QPS和有效期限制,詳情如下:
優(yōu)點(diǎn):合成語音效果還行,使用較為簡(jiǎn)單,開發(fā)測(cè)試的話免費(fèi)額度夠用了。
缺點(diǎn):正式產(chǎn)品使用的話還是要花錢。
這里以騰訊云的語音合成為例實(shí)現(xiàn)一個(gè)簡(jiǎn)單的語音合成腳本。
4.進(jìn)入密鑰管理界面,單擊新建密鑰,生成 SecretId 與 SecretKey,用于 API 調(diào)用時(shí)生成簽名。
5.用Python調(diào)用接口進(jìn)行語音合成,其中APP_ID、SECRET_ID、SECRET_KEY在上一步中獲得,代碼如下:
# coding=UTF-8 import requests import wave import json import import time import collections import urllib import import hmac import hashlib import uuid import os TCLOUD_APP_ID = XXXX TCLOUD_SECRET_ID = "XXXX" TCLOUD_SECRET_KEY = "XXXX" OUTPUT_PATH = "./audio" def generate_sign(request_data): url = "tts.cloud.tencent.com/stream" sign_str = "POST" + url + "?" sort_dict = sorted(request_data.keys()) for key in sort_dict: sign_str = sign_str + key + "=" + urllib.parse.unquote(str(request_data[key])) + '&' sign_str = sign_str[:-1] sign_bytes = sign_str.encode('utf-8') key_bytes = TCLOUD_SECRET_KEY.encode('utf-8') authorization = .b64encode(hmac.new(key_bytes, sign_bytes, hashlib.sha1).digest()) return authorization.decode('utf-8') def text2wav(content): request_data = { "Action": "TextToStreamAudio", "AppId": TCLOUD_APP_ID, #返回音頻格式:Python SDK只支持pcm格式 #pcm:返回二進(jìn)制 pcm 音頻,使用簡(jiǎn)單,但數(shù)據(jù)量大。 "Codec": "pcm", "Expired": int(time.time()) + 3600, #模型類型,1:默認(rèn)模型 "ModelType": 1, #主語言類型: #1:中文(默認(rèn)) #2:英文 "PrimaryLanguage": 1, #項(xiàng)目 ID,用戶自定義,默認(rèn)為0。 "ProjectId": 0, #音頻采樣率: #16000:16k(默認(rèn)) #8000:8k "SampleRate": 16000, "SecretId": TCLOUD_SECRET_ID, "SessionId": str(uuid.uuid1()), #語速,范圍:[-2,2],分別對(duì)應(yīng)不同語速: #-2代表0.6倍 #-1代表0.8倍 #0代表1.0倍(默認(rèn)) #1代表1.2倍 #2代表1.5倍 #輸入除以上整數(shù)之外的其他參數(shù)不生效,按默認(rèn)值處理。 "Speed": 0, "Text": content, "Timestamp": int(time.time()), #音色: #0:親和女聲(默認(rèn)) #1:親和男聲 #2:成熟男聲 #3:活力男聲 #4:溫暖女聲 #5:情感女聲 #6:情感男聲 "VoiceType": 5, #音量大小,范圍:[0,10],分別對(duì)應(yīng)11個(gè)等級(jí)的音量,默認(rèn)值為0,代表正常音量。沒有靜音選項(xiàng)。 "Volume": 5, } signature = generate_sign(request_data) # print(f"signature: {signature}") header = { "Content-Type": "application/json", "Authorization": signature } url = "https://tts.cloud.tencent.com/stream" # print(request_data) r = requests.post(url, headers=header, data=json.dumps(request_data), stream = True) # print(r) i = 1 t = int(time.time() * 1000) output_file = os.path.join(OUTPUT_PATH, f"{t}.wav") print(f"generate audio file: {output_file}") wavfile = wave.open(output_file, 'wb') wavfile.setparams((1, 2, 16000, 0, 'NONE', 'NONE')) for chunk in r.iter_content(1000): if (i == 1) & (str(chunk).find("Error") != -1) : print(chunk) return "" i = i + 1 wavfile.writeframes(chunk) wavfile.close() return output_file if __name__ == "__main__": print(text2wav("你好"))
也可參考官方提供的SDK
參考資料:
https://zhuanlan.zhihu.com/p/82278135
https://pypi.org/project/pyttsx3/
https://www.xfyun.cn/services/online_tts
https://cloud.tencent.com/product/tts/getting-started
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03