AWS Polly 및 Python을 사용하여 긴 텍스트 파일을 음성으로 변환
패키지를 설치한 후:
pip3 install polly-textfile-cli
다음과 같이 실행합니다.
polly-textfile --path input.txt --name output-name
패키지 내에서 텍스트 파일은 목록으로 개별 단어로 나뉩니다.
def fileChunkList(filePath, limit):
with open(filePath, 'r') as file:
data = file.read().replace('\n','')
#lines = [data[i:i+limit] for i in range(0, len(data), limit)]
lines_in = data.split(" ")
lines = constructSentences(lines_in,limit)
return lines
그런 다음
lines = constructSentences(lines_in,limit)
는 Polly가 오디오로 렌더링할 각 세그먼트를 재구성하는 데 사용됩니다.def constructSentences(words,limit):
ss = []
s = []
for w in words:
if len(w) + len(" ".join(s)) <= limit:
s.append(w)
else:
sentence = " ".join(s)
ss.append(sentence)
s = []
s.append(w)
return ss
따라서
limit
가 250이면 "문장"(최대 길이가 limit
인 문자열)에 새 단어를 추가하기 전에 길이가 초과되는지 확인하고 초과되면 문장이 추가됩니다. 목록, 그리고 새로운 것이 시작되었습니다. 이것은 lines
의 fileChunkList()
목록으로, 다음 함수에서 생성된 녹음에 대한 텍스트 스크립트가 됩니다.def createChunkAudio(id, linesList):
parts = len(linesList)
partsIdList = []
for i in range(1, parts):
resp = streamAudio(linesList[i-1])
stream = resp['AudioStream']._raw_stream
with FileIO("%s-part-%s.mp3" % (id,i), 'w') as file:
for i in stream:
file.write(i)
partsIdList.append(file.name)
return partsIdList
여기서
lines
목록의 최대 길이 250개 항목에 대해 위 루프의 ${whatever-output-name}-part-1.mp3
함수에 전달하여 mp3 파일이 생성됩니다(즉, streamAudio()
). 오디오 스트림을 생성하기 위해 Polly에 전화를 끊습니다.def streamAudio(inString):
polly = client("polly", "us-east-2")
response = polly.synthesize_speech(
Text=inString,
OutputFormat="mp3",
VoiceId="Matthew")
return response
이 시점에서 예를 들어
output-part-1.mp3
, output-part-2.mp3
및 output-part-3.mp3
와 같은 mp3 파일과 같이 3개의 세그먼트로 분할해야 하는 텍스트 파일에 대해 생성했습니다. 이는 그다지 편리하지 않으므로 마지막 단계는 위의 함수에서 만든 오디오 청크의 경로 목록을 사용하여 이들을 결합합니다.def concatPartsAudio(pathList, id):
print(pathList)
cmdStr = "concat:"
for p in pathList:
if pathList[-1] == p:
cmdStr = cmdStr + "%s" % (p)
else:
cmdStr = cmdStr + "%s|" % (p)
print(cmdStr)
concat = os.system("ffmpeg -i '%s' -acodec copy '%s.mp3'" % (cmdStr, id))
s = os.system("stat %s.mp3" % (id))
return s
이것은 선호하는 오디오 출력 설정에 따라 여러 가지 방법으로 수행할 수 있지만 가장 간단한 형식으로 각 파일을
output.mp3
에 연결합니다.
Reference
이 문제에 관하여(AWS Polly 및 Python을 사용하여 긴 텍스트 파일을 음성으로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmarhee/turning-long-textfiles-into-speech-with-aws-polly-and-python-412f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)