Comments 32
нельзя загрузить файлы напрямую в статью
Предполагается, что проект размещается где-то на GitHub, например.
Можно было действительно оформить в виде репозитория на github. Прибавить установочный или requerments файл, снабдить немного документацией там (хотя бы пример базового использования функций) и уже глядишь готовый полезный тул, чтобы упрощать людям жизнь!
А если еще в pypi залить, можно будет вообще
pip install package_name
pip -m package_name
Не хочу быть душным, просто это реально максимально упрощает установку и использование
Спасибо за совет, но у меня особо функций и нет, все выполняется сразу после запуска и не спрашивает пользователя.
Возможно, когда нечем будет занять руки я опубликую код и на гитхабе.
Ого! Как раз мне прилетела задача озвучивать видосы разными языками по сгенеренным ранее субтитрам.
Спасибо, мил человек!
Можно твой код взять основу и немного переделать? Лицензия у него какая?
Лицензия свободная, писал сам с нуля, взять можно.
Но если намечается что то серьезное советую изменить метод запросов с костыля в виде пробной версии с недолговечным токеном на запросы с использованием токена своего собственного приложения. Сам я это не сделал потому что гугл хотел от меня слишком много лишних (на мой взгляд) данных.
Дада, сегодня ночью буду гонять и ковырять. Я ничерта не знаю про Google TTS и никогда им не пользовался, хотел сегодня ночером начать погружаться в тематику.
Твой код прям супер в тему! Земной тебе поклон!
Слушай, маленький вопрос на счёт файла с ударениями.
А ты не видал где подобных же, но под разные другие языки, типа хинди, например?
А сохранение перевода книги средствами Google и python мы умеем делать? Я могу, безо всяких токенов, но статью оформлять пока лень, да и есть опасения, что прикроют лавочку, если все начнут злоупотреблять ею.
Что до озвучки текста, то есть голосовые движки, которые можно найти в Интернете. Есть программы озвучки, типа «Балаболка». Для изучения иностранных языков, в принципе, неплохо. Вот мои некоторые эксперименты:
https://youtu.be/MWCMmgTUlDs
https://youtu.be/F4mD-2vf0k4
Пока что у меня не возникало потребности в переводе книг, так что нет. И если у вас есть способ использовать именно google tts без токена - прошу описать хотя бы принцип, буду благодарен.
Насчет голосовых движков - я пробовал другие, но мне больше всего зашел именно вариант от гугла, так что про него и статья.
Размер одного (get) запроса не более 10-15 КБ (я брал 7-8 КБ). Время паузы между запросами должно быть более 10 секунд (у меня было – 11).
На Питоне был написан бот, который считывает запросы из файлов (их может быть сотни, сами файлы формируются другим скриптом из текста оригинала) и отправляет их на сайт, с помощью «import requests», с определенной задержкой («import time»). Результаты приходят в формате json, с которыми можно работать через пакет, загружаемый «import json». Далее мы формируем вывод переведенного текста, так, как нам удобно.
Переводит этот сервис Гугла очень неплохо, поэтому я понимаю ваш интерес именно к Гугловскому инструментарию, хотя лично я сторонник живого звука.
Вполне допускаю, что озвучку коротких текстов Гугл может делать и без токена, так, как он делает перевод. Если это так, то можно воспользоваться предложенной идеей – посылкой автоматизированных запросов, с достаточными задержками между ними и обработкой полученных результатов. По крайней мере, 5000 символов Гугл озвучивает бесплатно, в браузере. Остается найти только соответствующую ссылку на API-сервис, как для перевода текста.
Да, переводчиком гугл позволяет пользоваться без токена. Однако с tts ситуация иная, без токена он возвращает Bad Request. Как вы заметили, у гугла существует демо форма, но именно на основе того, что гугл позволяет озвучивать 5000 символов просто так, и функционирует мой код. Текст разбивается по 5000 символов и отправляется в ту демо-форму, откуда уже и получает результат, с последующим кодированием в звук.
Сама же ссылка на api выглядит так texttospeech.googleapis.com/v1test1/text:synthesize, и к ней обязательно поле токена, если оно будет например пустое выдаст Unauthorized. Совсем без него Bad Request. Как с переводчиком здесь никак не получается.
А годится ли это решение для озвучки ходожественных книг? Можно ли пример послушать?
Как по мне, для художественных книг подходит только если улучшать словарь. Да и подавляющее большинство уже озвучены, не обязательно использовать tts. Но тройку книг залил - скачать.
Послушал ваши примеры - по-моему очень хорошо. Во всяком случае - сильно лучше, чем читают некоторые "декламаторы"-любители. Разве что, на мой вкус, темп немного увеличить.
Если можно, выложите сам файл скрипта куда-нибудь, на тот же гугл-диск. Возникли пробемы с кодировками, писал Вам в ЛС. Возможно, если не перегонять его через буфер этих проблем не будет.
Немного более простой путь получения токена:
Открываем в браузере https://gstatic.com/cloud-site-ux/text_to_speech/text_to_speech.min.html
в строку url вводим
javascript: void window.addEventListener("cloud-demo-captcha-solved", function(ev){document.write(ev.detail.token)})
(на странице после этого ничего не меняется)
Жмем "SPEAK IT", после решения капчи на странице отображается токен.
Сработало после вставки в Консоль. Со строкой url не получилось. (Пробовал в Chromium 93)
Спасибо! Дополнил статью.
nameBook=str(configF['book']['nameBook'])
getitem raise KeyError(key) KeyError: 'book'
выдает ошибку
У вас в папке со скриптом присутствует файл конфига? Возможно в нем вы стёрли первую строку? Посмотрите в конце статьи скриншот, в нем видно какие файлы должны быть в одной папке.
config.ini на месте и [book] в начале файла присутствует
Залил файлы на гитхаб, попробуйте использовать их: https://github.com/iron-blooded/book-voiceover
Может, ты коряво ключ скопировал в конфигу? Ты его закавычь.
Бро, либа random не используется нигде. Убери из импорта.
Еще замечание, бро.
Перед вызовом малтипроцессинга куда-то в район строки 172 нехудо бы сунуть родное if __name__ == '__main__'
, а то оно будет свинить.
Слушай, бро. Ну, получается относительно неплохо, хотя не хватает в тексте пауз порой.
Однако, у меня на выходе звуковое файло почему-то крякает порой. У тебя такое было? Это на моей стороне косяк, или так гугль работает?
Такого у себя не замечал. Возможно, у вас в тексте какие то лишние символы? Попробуйте так же сгенерировать аудио под тем же порядковым номером, в конфиге можно указать откуда начинать, и послушать на наличие посторонних звуков.
У меня проблема с паузами возникает в диалогах. Почему-то при наличии тире, после точки паузы нет совсем. Но если тире нет, а просто после точки идет новая строка - все паузы расставляет корректно. Удалил регуляркой все тире в прямой речи - паузы появились и диалоги читает хорошо.
Еще движок путается с е/ё - пришлось пройтись поиском и руками заменить где надо черт/чёрт и подобные слова.
У меня файлы не крякают - хотя не все могут их открыть. vlc, mpv открывает нормально, а вот audacious - нет. Вместо звука дикий писк
Сохранение озвучки книги средствами Google TTS и python