首頁 > 軟體

Python呼叫訊飛語音合成API介面來實現文字轉語音

2023-09-12 18:01:22

準備工作

在編寫程式碼和呼叫API之前,首先需要準備好以下項:

  • 訊飛開放平臺賬戶:使用者可以免費註冊訊飛開放平臺,並建立應用程式,以獲得 access_key 和 appid。
  • requests庫:Requests 是一個優美而簡單的HTTP請求庫,它對我們傳送的所有需要的資料進行了處理,併為我們獲取並解析響應。您可以在命令列中輸入 pip install requests 來安裝它。
  • FFmpeg或pydub等第三方庫:用於將音訊檔從一種格式轉換為另一種格式。

傳送請求

我們將使用 Python 中的 requests 庫向訊飛語音合成API傳送HTTP請求,該API將其轉換為語音檔案。使用者可以選擇多達11種不同語言的多個不同語音型別進行轉換。

需要注意的是,要存取API服務,還需要選擇HTTP通訊協定、設定HTTP頭、獲取 Unix 系統時間和根據引數構建 MD5 校驗和等,以確保 API 響應正確。

以下是範例程式碼:

import hashlib
import base64
import json
import time
import requests
url = "http://api.xfyun.cn/v1/service/v1/tts"
params = {
    "text": "要轉換為語音的文字",
    "lang": "zh_cn",
    "voice_name": "xiaoyan",
    "engine_type": "intp65",
}
headers = {
    "Content-Type": "application/x-www-form-urlencoded; charset=utf-8",  # 請求頭部
    "X-Appid": "YOUR_APP_ID",  # 替換為您的appid
    "X-CurTime": str(int(time.time())),
    "X-Param": base64.b64encode(json.dumps(params).replace(' ', '').encode('utf-8')),
    "X-CheckSum": hashlib.md5((YOUR_API_SECRET + str(int(time.time())) + base64.b64encode(
        json.dumps(params).replace(' ', '').encode('utf-8')).decode('utf-8')).encode('utf-8')).hexdigest(),
}  # 認證授權資訊
response = requests.post(url, data=params, headers=headers)

注意,在上述範例程式碼中,程式碼執行成功後,我們的響應返回一個MP3流。可以使用 content 屬性獲取響應正文。

with open('audio.mp3', 'wb') as f:
    f.write(response.content)

格式轉換

獲取到包含音訊資料的唯一MP3檔案後,我們需要對其進行格式轉換,以適應各種想要使用語音檔案的場景。在這裡,我們介紹兩個流行的第三方庫。

pydub

pydub 是一個音訊處理庫,它利用了FFmpeg和其他音訊處理庫,使得將wav檔案轉換成各種格式變得容易。下面是pydub庫的安裝方式:

pip install pydub

然後,以下程式碼使用pydub將MP3檔案轉換為WAV檔案:

from pydub import AudioSegment
sound = AudioSegment.from_file("audio.mp3", format="mp3")
sound.export("audio.wav", format="wav")

請注意,此處只需更改匯入和輸出檔案路徑就可以將mp3檔案轉換為任何常見的音訊格式。

FFmpeg

另一個常見的音訊工具是 FFmpeg,它同樣能很好地完成音訊格式轉換的任務。

下載並設定你的作業系統上的FFmpeg二進位制版或原始碼,或者選擇自己偏好的FFmpeg API Python埠(如ffpy)。

然後,以下程式碼呼叫FFmpeg將 MP3 檔案轉換為 WAV 檔案:

import ffmpeg
input_audio = ffmpeg.input('audio.mp3')
output_audio = ffmpeg.output(input_audio, 'audio.wav')
ffmpeg.run(output_audio)

以上就是Python呼叫訊飛語音合成API介面來實現文字轉語音的詳細內容,更多關於Python實現文字轉語音的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com