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