Архітектура GCP (зображення створене автором цієї публікації)
Технології перетворення тексту в мову (Text-to-Speech, TTS) та мови в текст (Speech-to-Text, STT) революціонізували наш спосіб взаємодії з машинами. Від віртуальних асистентів до автоматичного субтитрування, ці інструменти дозволяють створювати більш доступні та інтерактивні досвіди.
У цій статті ми детально розглянемо, як реалізувати веб-додаток за допомогою Flask та API Text-to-Speech і Speech-to-Text від Google Cloud, що дозволяє конвертувати текст в аудіо і навпаки. Ми крок за кроком розберемо ключові концепти, які стоять за цими технологіями.
🌐 Що таке перетворення тексту в мову і мови в текст?
Text-to-Speech (TTS):
Перетворення тексту в мову трансформує текстовий контент в аудіо за допомогою моделей глибокого навчання. Google Cloud надає передове API, яке дозволяє:
- Налаштування голосу: Вибір з різних тонів голосу та статей.
- Регулювання швидкості та тону: Зміна швидкості читання для кращого користувацького досвіду.
- Підтримка багатьох мов: Включаючи різні акценти.
- Аудіоформати: Такі як MP3, LINEAR16 та OGG_OPUS для різних випадків використання та пристроїв.
Метою TTS є надання більш природного користувацького досвіду в додатках, таких як голосові асистенти, автоматизоване читання та послуги доступності.
Speech-to-Text (STT):
З іншого боку, перетворення мови в текст здійснюється з високою точністю. Ця технологія використовується в:
- Реальному субтитруванні: Корисно для конференцій та мультимедійного контенту.
- Голосових командах: Дозволяє взаємодіяти з комп'ютерними системами за допомогою голосу.
- Аналізі дзвінків: Перетворює розмови в текст для покращення обслуговування клієнтів.
API Speech-to-Text від Google може аналізувати аудіо на різних мовах, застосовувати оптимізовані моделі та генерувати високоточні транскрипції.
⚙️ Вимоги до проекту
Для завершення цього проекту вам знадобиться:
- Обліковий запис Google Cloud: Потрібно мати обліковий запис з активованим рахунком для доступу до сервісів Google Cloud.
- Активовані Google API: Переконайтеся, що активували потрібні API:
- API Text-to-Speech:
gcloud services enable texttospeech.googleapis.com
- API Speech-to-Text:
gcloud services enable speech.googleapis.com
- Cloud Shell: Розробницьке середовище на базі Linux, попередньо налаштоване Google Cloud.
Середовище Cloud Shell на GCP (зображення створене автором цієї публікації)
- Python 3.11 або вищий: Попередньо встановлений в Cloud Shell.
- Системні залежності: Встановіть
ffmpeg
для обробки аудіо.
⚙️ Інсталяція
Слідуйте цим крокам для налаштування та запуску проекту в Cloud Shell:
Клонування репозиторію:
git clone https://github.com/vilcajoel/speech-text-and-text-to-speech-gcp.git
cd speech-text-and-text-to-speech-gcp
Створення віртуального середовища:
python3 -m venv venv
source venv/bin/activate
Встановлення системних залежностей:
sudo apt-get update && sudo apt-get install -y ffmpeg
Встановлення залежностей Python:
pip install -r requirements.txt
Зміст файлу requirements.txt
:
Flask==3.0.0
google-cloud-texttospeech==2.14.1
google-cloud-speech==2.21.0
gunicorn==21.2.0
Запуск додатку:
python app.py
Додаток буде доступний за адресою: http://127.0.0.1:5000
🌐 Як використовувати додаток
Перетворення тексту в аудіо:
- Введіть текст у поле введення.
- Виберіть стать голосу (нейтральний, чоловічий або жіночий).
- Регулюйте швидкість мовлення.
- Натисніть "Перетворити в аудіо" і послухайте відтворення.
Перетворення аудіо в текст:
- Натисніть кнопку "Почати запис".
- Запишіть свій голос і натисніть "Зупинити запис".
Отримайте транскрипцію на екрані.
Зображення веб-додатку, створеного за допомогою Flask (зображення створене автором цієї публікації)
Пояснення коду крок за кроком
Цей код реалізує веб-додаток за допомогою Flask, щоб конвертувати текст в аудіо за допомогою API Google Cloud Text-to-Speech, та аудіо в текст за допомогою API Google Cloud Speech-to-Text. Повний код ви можете знайти в цьому репозиторії на GitHub: https://github.com/joelvilcat/speech-text-and-text-to-speech-gcp
Пояснення основних функцій:
text_to_speech(input_text, ssml_gender, speaking_rate)
def text_to_speech(input_text, ssml_gender, speaking_rate):
client = texttospeech.TextToSpeechClient()
synthesis_input = texttospeech.SynthesisInput(text=input_text)
voice = texttospeech.VoiceSelectionParams(
language_code="es-ES",
ssml_gender=ssml_gender
)
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.MP3,
speaking_rate=float(speaking_rate)
)
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config
)
audio_base64 = base64.b64encode(response.audio_content).decode("utf-8")
return audio_base64
Ця функція приймає текстовий вхід і конвертує його в аудіо за допомогою API Google Cloud Text-to-Speech. Створюється екземпляр TextToSpeechClient
, щоб підключитися до TTS API. Вхідний текст передається об'єкту SynthesisInput
. Параметри голосу налаштовуються через VoiceSelectionParams
, такі як language_code="es-ES"
(іспанська з Іспанії) та стать голосу. AudioConfig
вказує формат аудіо (MP3) та швидкість мовлення. Відповідь від API повертається у вигляді аудіо-стрічки в base64, яку можна легко вбудувати в веб-інтерфейс.
audio_to_text(audio_content)
def audio_to_text(audio_content):
client = speech.SpeechClient()
audio = speech.RecognitionAudio(content=audio_content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.MP3,
sample_rate_hertz=48000,
language_code="es-ES"
)
response = client.recognize(config=config, audio=audio)
transcript = [result.alternatives[0].transcript for result in response.results]
return transcriptp
Ця функція обробляє аудіофайл і конвертує його в текст за допомогою API Google Cloud Speech-to-Text. Ініціалізується SpeechClient
, щоб підключитися до API, потім обробляється аудіоконтент за допомогою RecognitionAudio
. RecognitionConfig
вказує формат файлу (MP3), частоту дискретизації (48000 Гц) та мову для транскрипції (іспанська з Іспанії). Після відправлення запиту функція витягує найбільш вірогідну транскрипцію з відповіді API і повертає її.
Хочете більше? Натисніть кнопку 👏 50 разів, і станеться щось чудове.
Якщо ви хочете дізнатися більше про захоплюючий світ Data Engineering та як він доповнює інші ролі в технологічній індустрії, слідкуйте за мною тут на Medium! Ви також можете зв'язатися зі мною на LinkedIn, щоб залишатися в курсі нових матеріалів і обговорень про дані, хмарні технології та як перетворювати інформацію на цінність для компаній.
Слідкуйте за Joel Vilca для більше навчального контенту та цікавих матеріалів!
Перекладено з: Convert Text to Audio and Audio to Text with Google Cloud: Complete Guide