изменить язык в gTTS с помощью подпроцесса - PullRequest
0 голосов
/ 17 июня 2019
import os
import subprocess
from gtts import gTTS


class Record:
    def __init__(self, file, path):
        self.file_name = f'{file.split(".")[0]}.mp3'
        self.file_path = os.path.join(path, file)
        self.out_path = os.path.join(path, self.file_name)

    def create_recordings(self):
        subprocess.call(['gtts-cli', '-f' + self.file_path, '-o' + self.out_path])


path = r'C:\Users\xxxx\Desktop\create_recordings'

for file in os.listdir(path):
    if file.endswith('.txt'):
        Record(file, path).create_recordings()

что я пытаюсь сделать:

изменить язык в команде subprocess.call. Я попытался добавить 'lang =' + 'en-uk' после self.file_path, но он возвращает ошибку:

Usage: gtts-cli [OPTIONS] <text>

Error: Invalid value for "<text>": <text> and -f/--file <file> can't be used together 

, поэтому я не совсем уверен, как изменить его, чтобы добавить другой язык

что на самом деле похоже на id, если я мог бы передать язык вЗапишите класс и используйте его в команде subprocess.call

. Существует множество языков для его изменения, но здесь представлены все английские, которые отображаются при использовании gtts-cli --all в командной строке:

  en-au: English (Australia)
  en-ca: English (Canada)
  en-gb: English (UK)
  en-gh: English (Ghana)
  en-ie: English (Ireland)
  en-in: English (India)
  en-ng: English (Nigeria)
  en-nz: English (New Zealand)
  en-ph: English (Philippines)
  en-tz: English (Tanzania)
  en-uk: English (UK)
  en-us: English (US)
  en-za: English (South Africa)
...