作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将包含多种语言的文档中的文本转换为语音。当我尝试执行以下代码时,我会提取问题以清楚地记录每种语言。这种类型的混合器文本音频如何清楚地保存?
from gtts import gTTS
mytext = 'Welcome to gtts! আজ একটি ভাল দিন। tumi kemon acho? ٱلْحَمْدُ لِلَّٰهِ'
language = 'ar' # arabic
myobj = gTTS(text=mytext, tld='co.in', lang=language, slow=False)
myobj.save("audio.mp3")
最佳答案
仅使用文字转语音是不够的,因为它只能使用一种语言。
为了解决这个问题,我们需要检测句子每个部分的语言。
然后通过文本到语音运行它,并将其附加到我们最终的口语句子中。
最好使用一些神经网络(有很多)来为您进行分类。
为了证明概念,我使用 googletrans
检测句子每个部分的语言,并使用 gtts
从中制作 mp3 文件。
它不是防弹的,尤其是阿拉伯语文本。 googletrans
以某种方式检测到gtts
无法识别的不同语言代码。出于这个原因,我们必须使用 code_table 来选择适用于 gtts 的适当语言代码。
这是工作示例:
from googletrans import Translator
from gtts import gTTS
input_text = "Welcome to gtts! আজ একটি ভাল দিন। tumi kemon acho? ٱلْحَمْدُ لِلَّٰه"
words = input_text.split(" ")
translator = Translator()
language, sentence = None, ""
lang_code_table = {"sd": "ar"}
with open('output.mp3', 'wb') as ff:
for word in words:
if word == " ":
continue
# Detect language of current word
word_language = translator.detect(word).lang
if word_language == language:
# Same language, append word to the sentence
sentence += " " + word
else:
if language is None:
# No language set yet, initialize and continue
language, sentence = word_language, word
continue
if word.endswith(("?", ".", "!")):
# If word endswith one of the punctuation marks, it should be part of previous sentence
sentence += " " + word
continue
# We have whole previous sentence, translate it into speech and append to mp3 file
gTTS(text=sentence, lang=lang_code_table.get(language, language), slow=False).write_to_fp(ff)
# Continue with other language
language, sentence = word_language, word
if language and sentence:
# Append last detected sentence
gTTS(text=sentence, lang=lang_code_table.get(language, language), slow=False).write_to_fp(ff)
显然速度不快,不适合较长的文本。
它还需要更好的分词器和正确的错误处理。
同样,这只是概念证明。
关于python - 如何在 'gTTS' 中使用多语言输入单行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70852444/
我是一名优秀的程序员,十分优秀!