Синтез речи на Python с помощью gTTS

Синтез речи на Python с помощью gTTS

Если вам нужно написать программу на Python, использующую синтез речи, вы можете использовать модуль Google TTS. Попробуем написать программу которая сможет читать вслух текстовый файл на русском языке. Сперва установим необходимые модули: pip install gTTS pip install pygame Модуль gTTS нужен для того чтобы преобразовать текст в mp3 файл. Модуль pygame необходим для воспроизведения полученного от гугла mp3 файла. Во время работы программа отправляет текст предложений гуглу, получает взамен mp3 файлы и проигрывает их вслух. Имя получаемых mp3 файлов формируется из текущей даты-времени, и является уникальным. Чтобы в папке с приложением не скапливалось множество mp3 файлов, при воспроизведении текущего mp3 файла, предыдущий удаляется. Если экстренно завершить работу программы, в папке могут остаться лишние mp3 файлы, которые придётся удалить вручную. Для работы программы нужно высокоскоростное интернет соединение, со скоростью не менее 10 Мбит. Исходники программы можно скачать тут: speakreader.zip

# Чтение вслух
import os
import re
from pygame import mixer
import datetime
import time
from gtts import gTTS

# Для того чтобы не возникало коллизий при удалении mp3 файлов
# заведем переменную mp3_nameold в которой будем хранить имя предыдущего mp3 файла
mp3_nameold='111'
mp3_name = "1.mp3"

# Инициализируем звуковое устройство
mixer.init()

# Открываем файл с текстом и по очереди читаем с него строки в ss
f = open("text.txt","r")
ss = f.readline()
while ss:
    # Делим прочитанные строки на отдельные предложения
    split_regex = re.compile(r'[.|!|?|…]')
    sentences = filter(lambda t: t, [t.strip() for t in split_regex.split(ss)])

    # Перебираем массив с предложениями 
    for x in sentences:
        if(x!=""):
            print(x)
            # Эта строка отправляет предложение которое нужно озвучить гуглу
            tts=gTTS(text=x, lang='ru')
            # Получаем от гугла озвученное предложение в виде mp3 файла           
            tts.save(mp3_name)
            # Проигрываем полученный mp3 файл
            mixer.music.load(mp3_name)
            mixer.music.play()
            while mixer.music.get_busy():
                time.sleep(0.1)
            # Если предыдущий mp3 файл существует удаляем его
            # чтобы не захламлять папку с приложением кучей mp3 файлов
            if(os.path.exists(mp3_nameold) and (mp3_nameold!="1.mp3")):
                os.remove(mp3_nameold)
            mp3_nameold=mp3_name
            # Формируем имя mp3 файла куда будет сохраняться озвученный текст текущего предложения
            # В качестве имени файла используем текущие дату и время
            now_time = datetime.datetime.now()
            mp3_name = now_time.strftime("%d%m%Y%I%M%S")+".mp3"
            
    # Читаем следующую порцию текста из файла
    ss = f.readline()

# Закрываем файл    
f.close

# Устанвливаем текущим файлом 1.mp3 и закрываем звуковое устройство
# Это нужно чтобы мы могли удалить предыдущий mp3 файл без колизий
mixer.music.load('1.mp3')
mixer.stop
mixer.quit

# Удаляем последний предыдущий mp3 файл
if(os.path.exists(mp3_nameold)):
    os.remove(mp3_nameold)
Поняв как работает синтез речи на Python, вы сможете использовать данный пример в любых ваших проектах.

Синтез речи на Python Лого Pythono.ru Синтез речи на Python с помощью gTTS