我正在研究文本到语音的算法,我终于做到了,这个算法做的是转换一个html文件
变成说话,像那样:python record.py file.html
在这里一切正常,但我想使用以下命令在多个文件上运行相同的命令:
python record.py file1.html & python record.py file2.html & python record.py file3.html
但是我没有单独录制每个音频,而是在输出上有重叠
PS1:我使用的是ubuntu服务器,我想在6000多个文件上运行我的命令,每个文件大约需要20分钟的时间,因为它们是一个大文件
PS2:我正在使用pyaudio录制声音,下面是我代码中的录制部分:
from seleniumwire import webdriver
import sys
from webdriver_manager.chrome import ChromeDriverManager
import time
import pyaudio
import wave
from selenium.webdriver.chrome.options import Options
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
chrome_options = Options()
chrome_options.add_argument("--headless")
browser = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=chrome_options)
#selenium part
browser.get('website')
search = browser.find_element_by_id("text-area")
search.clear()
data="this is a simple test"
search.send_keys(data)
time.sleep(2)
browser.find_element_by_id("btn").click()
print("waiting for audio")
size = len(data)/200
time.sleep(size*2)
print("audio detected")
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
#number = len(data)
RECORD_SECONDS = size*17
WAVE_OUTPUT_FILENAME = 'first.mp3'
open(WAVE_OUTPUT_FILENAME, "wb+")
frames = []
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE,input=True, frames_per_buffer=CHUNK)
print("started recording")
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
audio = stream.read(CHUNK)
frames.append(audio)
print("end of recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
有没有办法录制来自某个PID的音频
我听说过docker集装箱,但我不知道它在这种情况下是否有用
我解决这个问题的方法是从网站上下载音频文件,而不是
记录下来,这个link帮助很大
我无法让您的示例代码正常工作,但我有一个基本猜测:您是否更改了每个调用的输出文件名?看看你的脚本,情况似乎并非如此。在某些情况下,不更改文件名可能会导致文本乱码
某些包(例如pyttsx3)会做一些古怪的事情,以便将音频写入一个非线程安全的文件。这很可能就是您的方法所发生的情况
脱机文本到语音的转换
我发现完成这项任务的一个非常可靠的方法是直接调用类似^{} 的东西
I've written a little package that provides a CLI for this.它的核心在这个片段中:
基本步骤是:
espeak
,并将结果输出到*.wav
文件。'
、"
等问题李>espeak
仅输出到wav
李>*.wav
转换为mp3李>虽然您的计算机上可能已经安装了这些实用程序,但您始终可以通过以下方式(在ubuntu上)安装它们:
在线文语转换
如果您可以使用连接到google的在线文本到语音转换,那么^{} 包工作得非常好。特别是,以下功能可根据您的需要工作:
相关问题 更多 >
编程相关推荐