Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 直接从python程序播放音频(文本到语音)_Audio_Python 3.6_Text To Speech - Fatal编程技术网

Audio 直接从python程序播放音频(文本到语音)

Audio 直接从python程序播放音频(文本到语音),audio,python-3.6,text-to-speech,Audio,Python 3.6,Text To Speech,我试图弄清楚如何播放python程序中的音频,而不需要将音频保存到我的计算机中。声音是在python程序中创建的,只需要在播放之后立即播放和停止 我已经尝试过使用pygame、playsound、subprocess、GTT和各种其他工具,但没有成功 gTTS“工作”,但只保存音频,不播放 我也在使用Python3(我于2018年6月18日更新) PyAudio尝试对我无效。但这是我的代码: import subprocess from gtts import gTTS if choose

我试图弄清楚如何播放python程序中的音频,而不需要将音频保存到我的计算机中。声音是在python程序中创建的,只需要在播放之后立即播放和停止

我已经尝试过使用pygame、playsound、subprocess、GTT和各种其他工具,但没有成功

gTTS“工作”,但只保存音频,不播放

我也在使用Python3(我于2018年6月18日更新)

PyAudio尝试对我无效。但这是我的代码:

import subprocess 
from gtts import gTTS 
if choose in card.keys(): 
  tts = gTTS(text = choose, lang = 'en') 
  tts.save(audio_eng) 
  checker(guess, choose, card, pract_one, good_count, bad_count, pract_two) 
  return_code = subprocess.call(["afplay", audio_eng])#, shell= True) 

我认为用于这类事情的主要图书馆是。它是在portaudio(一个C库)的上面构建的,我已经使用过很多次了

如果您已经用Python生成了音频,那么您可以简单地将其传递到输出,类似于PyAudio文档()中的示例。这将停止其他进程,直到音频文件播放完毕

"""PyAudio Example: Play a wave file."""

import pyaudio
import wave
import sys

CHUNK = 1024


# wf = wave.open(sys.argv[1], 'rb') # Original example
wf = your_audio_data_array

# instantiate PyAudio (1)
p = pyaudio.PyAudio()

# open stream (2)
stream = p.open(format=p.get_format_from_width(your_audio_data_samplewidth),
                channels=your_audio_data_nChannels,
                rate=your_audio_data_framerate,
                output=True)

# read data
data = wf # your_audio_data_array

# play stream (3)
while len(data) > 0:
    stream.write(data)
    # data = wf.readframes(CHUNK) # read more data if you want to stream another buffer

# stop stream (4)
stream.stop_stream()
stream.close()

# close PyAudio (5)
p.terminate()
我修改了这个例子,使之符合您对问题的解释;因此,您只需将音频数据缓冲区传递给PyAudio(您说您已经在Python中生成了该缓冲区)

要使多个进程同时发生,请参阅中的回调模式I/O