2012-03-28 5 views
7

में किसी फ़ाइल में संश्लेषित टेक्स्ट-टू-स्पीच रिकॉर्डिंग मैं संश्लेषित भाषण लेने और इसे ऑडियो फ़ाइल में रिकॉर्ड करने का एक तरीका खोजने का प्रयास कर रहा हूं। मैं वर्तमान में pyttsx का उपयोग अपनी टेक्स्ट-टू-स्पीच लाइब्रेरी के रूप में कर रहा हूं, लेकिन आउटपुट को फ़ाइल में सहेजने के लिए कोई तंत्र नहीं है, केवल इसे स्पीकर से सीधे चला रहा है। मैंने detecting and recording audio के साथ-साथ PyAudio में देखा है, लेकिन ये फ़ाइल में आउटगोइंग ऑडियो को रीडायरेक्ट करने के बजाय माइक्रोफ़ोन से इनपुट लेते हैं। क्या ऐसा करने का कोई ज्ञात तरीका है?पाइथन

उत्तर

4

आप subprocess का उपयोग कर -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" + टेक्स्ट) के साथ espeak को कॉल करने की आवश्यकता है। मैं आपके पास सभी विकल्पों को देखने के लिए espeak man pages पढ़ने की अनुशंसा करता हूं।

उम्मीद है कि इससे मदद मिलती है।

+0

बहुत बढ़िया, ऐसा ही किया तक पहुंचाता है चाल! धन्यवाद! – petrichor

1

आप Wav फ़ाइल में आउटपुट को सहेजने के लिए अधिक उन्नत SAPI wrapper का उपयोग कर सकते हैं। उदाहरण के लिए आप की कोशिश कर सकते

https://github.com/DeepHorizons/tts

कोड इस तरह दिखना चाहिए:

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

यहाँ एक उदाहरण है जो आप NSSpeechSynthesizer एपीआई

#!/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)