Запись синтезированного текста в речь в файл на Python - PullRequest
7 голосов
/ 28 марта 2012

Я пытаюсь найти способ взять синтезированную речь и записать ее в аудиофайл. В настоящее время я использую pyttsx в качестве своей библиотеки преобразования текста в речь, но нет механизма для сохранения вывода в файл, а только для воспроизведения его непосредственно из динамиков. Я изучил обнаружение и запись звука , а также PyAudio , но, похоже, они принимают вход от микрофона, а не перенаправляют исходящий звук в файл. Есть ли известный способ сделать это?

Ответы [ 5 ]

4 голосов
/ 29 марта 2012

Вы можете вызвать espeak с аргументом -w, используя подпроцесс .

import subprocess

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

textToWav('hello world','hello')

Это приведет к записи file_name.wav без чтения вслух.Если ваш текст находится в файле (например, text.txt), вам нужно вызвать espeak с параметром -f ("-f" + text).Я бы порекомендовал прочитать espeak man pages , чтобы увидеть все варианты, которые у вас есть.

Надеюсь, это поможет.

2 голосов
/ 11 января 2018

Вот пример, который дает вам доступ к 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)
2 голосов
/ 19 апреля 2017

Вы можете использовать более продвинутую оболочку SAPI для сохранения вывода в файл wav. Например, вы можете попробовать

https://github.com/DeepHorizons/tts

Код должен выглядеть следующим образом:

import tts.sapi
voice = tts.sapi.Sapi()
voice.set_voice("Joey")
voice.create_recording('hello.wav', "Hello")
0 голосов
/ 02 мая 2019

Также вы можете использовать Amazon Polly API:

Пример использования python доступен ниже:

https://aws.amazon.com/blogs/machine-learning/convert-your-text-into-an-mp3-file-with-amazon-polly-and-a-simple-python-script/

0 голосов
/ 19 ноября 2018

используйте кабель эмулятора входа и выхода VB с Audacity для записи любых выходных данных engine.play ().

Вам нужно будет загрузить кабели VB, затем настроить их через окна по умолчанию с настройками звука в Windows, затем установить для входа Audacity вход для звукового картографа Microsoft, нажать запись в Audacity и воспроизвести сценарий.Вы заметите, как только он закончил на Audacity, а затем экспортируйте то, что вам нужно зациклить.

Этот метод, возможно, выходит за рамки идеального, но работает на pyttsx3 и делает записи лучшего качества, чем espeak.

...