簡體   English   中英

在Python中將合成的文本到語音記錄到文件中

[英]Recording synthesized text-to-speech to a file in Python

我試圖找到一種方法來合成語音並將其記錄到音頻文件中。 我目前正在使用pyttsx作為我的文本到語音庫,但是沒有一種機制可以將輸出保存到文件中,只能直接從揚聲器播放。 我已經研究過檢測和錄制音頻以及PyAudio ,但這些似乎是從麥克風輸入而不是將輸出音頻重定向到文件。 有沒有一種已知的方法來做到這一點?

您可以使用 進程使用-w參數調用espeak

import subprocess

def textToWav(text,file_name):
   subprocess.call(["espeak", "-w"+file_name+".wav", text])

textToWav('hello world','hello')

這將寫入file_name.wav而不會大聲朗讀。 如果文本在文件中(例如text.txt),則需要使用-f參數(“-f”+ text)調用espeak。 我建議您閱讀espeak手冊頁以查看您擁有的所有選項。

希望這可以幫助。

您可以使用更高級的SAPI包裝器將輸出保存到wav文件。 例如,您可以嘗試

https://github.com/DeepHorizo​​ns/tts

代碼應該如下所示:

import tts.sapi
voice = tts.sapi.Sapi()
voice.set_voice("Joey")
voice.create_recording('hello.wav', "Hello")

下面是一個示例,可讓您訪問NSSpeechSynthesizer API

#!/usr/bin/env python

from  AppKit import NSSpeechSynthesizer
import sys
import Foundation


if len(sys.argv) < 2:
   text = raw_input('type text to speak> ')
else:
   text = sys.argv[1]

nssp = NSSpeechSynthesizer
ve = nssp.alloc().init()
ve.setRate_(100)
url = Foundation.NSURL.fileURLWithPath_('yourpath/test.aiff')
ve.startSpeakingString_toURL_(text,url)

使用帶有大膽的VB輸入和輸出模擬器電纜來記錄任何engine.play()輸出。

您將需要下載VB電纜,然后通過Windows聲音設置默認設置窗口,然后將Audacity的輸入設置為Microsoft聲音映射器輸入,點擊Audacity上的記錄並播放您的腳本。 您將注意到它已經在Audacity上完成,然后導出您需要循環的內容。

這種方法可能超出了范圍並不完美,但適用於pyttsx3並且記錄質量比espeak更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM