如何將pyttsx3的結果儲存為MP3或WAV檔案?


pyttsx3是一個Python庫,它提供了一個簡單的介面來使用文字轉語音(TTS)合成。文字轉語音(TTS)將書面文字轉換為語音。它主要用於根據文字生成語音並自定義語音音訊的各個方面。pyttsx3庫生成的語音輸出通常儲存為MP3或WAV等常用格式的音訊檔案。本文將討論如何將pyttsx3的結果儲存為MP3或WAV檔案。

演算法

將pyttsx3結果儲存為mp3或WAV檔案的通用演算法如下:

  • 匯入所需的庫:pyttsx3、time和os。

  • 使用pyttsx3.init()初始化pyttsx3引擎。

  • 使用engine.setProperty(property_name, value)設定任何所需的TTS屬性。此步驟是可選的。

  • 使用engine.say(text)提供TTS合成的文字輸入。

  • 指定臨時WAV檔案的輸出檔案路徑和名稱。

  • 使用engine.save_to_file(text, output_path)將語音儲存到臨時WAV檔案。

  • 執行TTS合成,並使用engine.runAndWait()等待其完成。

  • 使用ffmpeg等音訊轉換工具將臨時WAV檔案轉換為MP3格式。使用os.system("ffmpeg −i input.wav output.mp3")執行轉換。確保ffmpeg已安裝並在系統的PATH中。

  • 最終合成的語音現在已儲存為指定的MP3或WAV檔案格式。

方法一:使用pydub庫儲存為MP3

pydub庫簡化了將pyttsx3結果儲存為MP3格式的過程。只需幾行程式碼,即可使用export()方法將臨時WAV檔案轉換為MP3。它提供了一種方便的方法來處理音訊檔案,並提供處理不同格式的靈活性。

語法

audio.export(output_path, format="mp3")

這裡,audio.export(output_path, format="mp3")與pydub庫一起使用來匯出音訊檔案。它指定輸出路徑和格式,在本例中,將音訊儲存為MP3檔案。

示例

在下面的示例中,程式使用pyttsx3生成臨時WAV檔案,然後使用pydub的export()方法將其轉換為MP3檔案。合成的語音將儲存為名為“output.mp3”的MP3檔案。pydub庫簡化了將音訊檔案匯出為不同格式(包括MP3)的過程。

from pydub import AudioSegment
audio = AudioSegment.from_wav("output.wav")
audio.export("output.mp3", format="mp3")

輸出

上圖顯示output.mp3檔案已成功儲存為當前目錄中的output.wav檔案。(譯者注:原文此處有誤,應為成功儲存為MP3檔案)

方法二:使用wave模組儲存為WAV

wave模組是一個內建的Python模組,允許您將pyttsx3結果儲存為WAV格式。透過使用wave.open()函式,您可以設定WAV檔案的必要引數並將音訊幀寫入其中。此方法提供了一種基本且直接的方法來處理Python中的WAV檔案。

語法

audio_file.setparams(params)

這裡,audio_file.setparams(params)與wave模組一起使用來設定WAV檔案的引數,例如通道數、取樣寬度、幀速率和壓縮型別。

audio_file.writeframes(audio_data)

這裡,語法audio_file.writeframes(audio_data)用於將音訊幀(由audio_data變量表示)寫入WAV檔案。它根據指定引數將音訊資料儲存到檔案中。

示例

在下面的示例中,程式使用wave模組將pyttsx3生成的WAV音訊資料儲存到WAV檔案中。它開啟臨時WAV檔案,設定輸出檔案引數(例如通道數、取樣寬度、幀速率和壓縮型別),並將音訊幀寫入名為“output_saved.wav”的輸出檔案。

import wave
audio = open("output.wav", 'rb').read()
params = (2, 2, 44100, 0, 'NONE', 'not compressed')
with wave.open("output_saved.wav", 'wb') as audio_file:
    audio_file.setparams(params)
    audio_file.writeframes(audio)

輸出

上圖顯示output.mp3檔案已轉換為output_saved.wav檔案,然後儲存在mp3檔案所在的當前目錄中。(譯者注:原文此處有誤,應為直接儲存為WAV檔案)

方法三:使用soundfile庫儲存為WAV

soundfile庫提供了一個全面的解決方案,用於將pyttsx3結果儲存為WAV格式。它提供了一個高階介面來讀取和寫入各種格式的音訊資料。透過使用write()函式,您可以輕鬆地將pyttsx3生成的音訊資料儲存到新的WAV檔案中。

語法

soundfile.write(output_path, audio_data, sample_rate)

這裡,soundfile.write(output_path, audio_data, sample_rate)與soundfile庫一起使用來將音訊資料儲存到檔案中。它使用給定的sample_rate將包含音訊樣本的audio_data陣列寫入output_path指定的檔案。此語法提供了一種方便的方法,可以將音訊資料儲存到具有所需取樣率和檔案路徑的WAV檔案中。

示例

在下面的示例中,我們使用soundfile庫從pyttsx3生成的臨時WAV檔案中讀取音訊資料和取樣率。然後,它使用write()函式將音訊資料儲存到名為“output_saved.wav”的新WAV檔案中。soundfile庫提供了一種直接的方法來將音訊資料儲存到具有可自定義選項的WAV檔案中。

import soundfile as sf
audio, sample_rate = sf.read("output.wav")
sf.write("output_saved.wav", audio, sample_rate)

輸出

這裡,mp3檔案被轉換為.wav檔案,並以output_saved.wav檔案的名稱儲存在mp3檔案所在的同一目錄中。(譯者注:原文此處有誤,應為直接儲存為WAV檔案)

結論

在本文中,我們討論瞭如何透過將pyttsx3的結果儲存為mp3或WAV檔案來進行文字轉語音轉換。我們介紹了必要的步驟,從安裝pyttsx3到初始化引擎、合成語音以及將輸出儲存到音訊檔案。透過遵循這些步驟,您可以利用pyttsx3的功能生成高質量的語音,並將其儲存為所需的格式,以便在您的應用程式或專案中進一步使用。

更新於:2023年7月18日

2K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.