Что такое Google Apps Script и его возможности?
Google Apps Script — это облачная платформа разработки, позволяющая автоматизировать задачи и расширять функциональность Google Workspace (такие как Google Sheets, Docs, Forms, Drive и другие). Используя JavaScript, разработчики могут создавать собственные решения, интегрировать сервисы Google и сторонние API, а также автоматизировать рутинные процессы. Apps Script предоставляет доступ к широкому спектру сервисов Google, включая доступ к Google Cloud Platform.
Обзор сервисов Google для преобразования текста в речь
Google предоставляет несколько вариантов преобразования текста в речь (TTS). Основной и наиболее функциональный — это Google Cloud Text-to-Speech API, который предоставляет высококачественные голоса и гибкие настройки. Существуют и другие, менее функциональные альтернативы, но они обычно уступают Cloud Text-to-Speech API по качеству и возможностям.
Преимущества использования Apps Script для автоматизации TTS
Использование Apps Script для автоматизации TTS предоставляет ряд преимуществ:
- Интеграция с Google Workspace: Легкая интеграция с Google Sheets, Docs и другими сервисами для автоматизации озвучивания данных.
- Автоматизация задач: Автоматическое преобразование текста в речь на основе триггеров или расписаний.
- Расширяемость: Возможность создания пользовательских функций и пунктов меню для упрощения использования TTS.
- Бесплатное использование (в пределах лимитов): Google Cloud Text-to-Speech API предоставляет бесплатный уровень использования, достаточный для многих задач.
Реализация простого преобразования текста в речь с помощью Google Cloud Text-to-Speech API
Настройка Google Cloud Console и получение ключа API
- Перейдите в Google Cloud Console.
- Создайте новый проект или выберите существующий.
- Включите Text-to-Speech API для вашего проекта (в разделе API и сервисы).
- Создайте сервисный аккаунт (в разделе IAM и администрирование).
- Создайте ключ JSON для сервисного аккаунта и сохраните его.
Важно: Безопасно храните ключ API и не публикуйте его в открытом доступе.
Написание кода Apps Script для вызова Text-to-Speech API
/**
* Преобразует текст в речь с помощью Google Cloud Text-to-Speech API.
*
* @param {string} text Текст для преобразования в речь.
* @param {string} apiKey Ключ API Google Cloud Text-to-Speech.
* @return {Blob} Аудиофайл в формате MP3.
*/
function textToSpeech(text: string, apiKey: string): GoogleAppsScript.Base.Blob | null {
const url = 'https://texttospeech.googleapis.com/v1/text:synthesize?key=' + apiKey;
const payload = {
input: {
text: text
},
voice: {
languageCode: 'ru-RU',
name: 'ru-RU-Wavenet-B'
},
audioConfig: {
audioEncoding: 'MP3'
}
};
const options: GoogleAppsScript.URL_Fetch.URLFetchRequestOptions = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload)
};
try {
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
const audioContent = json.audioContent;
if (!audioContent) {
Logger.log('Ошибка: Не удалось получить audioContent из ответа API.');
return null;
}
const audioData = Utilities.base64Decode(audioContent);
const blob = Utilities.newBlob(audioData, 'audio/mp3', 'speech.mp3');
return blob;
} catch (e) {
Logger.log('Ошибка API: ' + e);
return null;
}
}
Объяснение параметров запроса: текст, язык, голос
В коде выше используются следующие параметры запроса:
input.text
: Текст, который необходимо преобразовать в речь.voice.languageCode
: Язык текста (например,ru-RU
для русского).voice.name
: Имя голоса (например,ru-RU-Wavenet-B
). Список доступных голосов можно найти в документации Google Cloud Text-to-Speech.audioConfig.audioEncoding
: Формат аудиофайла (например,MP3
).
Сохранение сгенерированного аудиофайла в Google Drive
/**
* Сохраняет аудиофайл в Google Drive.
*
* @param {Blob} audioBlob Аудиофайл.
* @param {string} folderId ID папки в Google Drive, куда нужно сохранить файл.
*/
function saveAudioToDrive(audioBlob: GoogleAppsScript.Base.Blob, folderId: string): void {
try {
const folder = DriveApp.getFolderById(folderId);
folder.createFile(audioBlob);
Logger.log('Аудиофайл успешно сохранен в Google Drive.');
} catch (e) {
Logger.log('Ошибка сохранения в Google Drive: ' + e);
}
}
Чтобы использовать эти функции вместе:
function main() {
const textToConvert = 'Привет, мир! Это пример преобразования текста в речь с использованием Google Apps Script.';
const apiKey = 'YOUR_API_KEY'; // Замените на свой ключ API
const folderId = 'YOUR_FOLDER_ID'; // Замените на ID папки в Google Drive
const audioBlob = textToSpeech(textToConvert, apiKey);
if (audioBlob) {
saveAudioToDrive(audioBlob, folderId);
}
}
Расширенные возможности: настройка голоса и управление скоростью речи
Выбор различных голосов и языков через API
API позволяет выбирать различные голоса и языки. Измените параметры voice.languageCode
и voice.name
в payload
, чтобы выбрать нужный голос. Полный список доступных голосов можно найти в документации Google Cloud Text-to-Speech API.
Регулировка скорости речи и высоты тона
В audioConfig
можно добавить параметры для регулировки скорости речи и высоты тона:
speakingRate
: Скорость речи (0.25 — 4.0).pitch
: Высота тона (-20.0 — 20.0).
audioConfig: {
audioEncoding: 'MP3',
speakingRate: 1.25, // Увеличение скорости речи на 25%
pitch: 2.0 // Небольшое повышение тона
}
Использование SSML для расширенного форматирования текста
SSML (Speech Synthesis Markup Language) позволяет добавить расширенное форматирование текста, например, паузы, акценты и произношение слов. Вместо input.text
используйте input.ssml
и заключите текст в теги <speak>
.
input: {
ssml: '<speak>Привет, мир! <break time="1s"/> Это пример <emphasis level="strong">SSML</emphasis>.</speak>'
}
Интеграция преобразования текста в речь в Google Sheets и Docs
Создание пользовательских функций для Google Sheets
Можно создать пользовательскую функцию в Google Sheets для преобразования текста из ячейки в речь. Функция будет возвращать ссылку на аудиофайл, сохраненный в Google Drive.
/**
* Преобразует текст из ячейки в речь и возвращает ссылку на аудиофайл.
*
* @param {string} text Текст для преобразования в речь.
* @param {string} apiKey Ключ API Google Cloud Text-to-Speech.
* @param {string} folderId ID папки в Google Drive.
* @return {string} Ссылка на аудиофайл в Google Drive.
* @customfunction
*/
function TTS_SHEET(text: string, apiKey: string, folderId: string): string {
const audioBlob = textToSpeech(text, apiKey);
if (audioBlob) {
const folder = DriveApp.getFolderById(folderId);
const file = folder.createFile(audioBlob);
return file.getUrl();
} else {
return 'Ошибка преобразования текста в речь.';
}
}
В Google Sheets используйте функцию `=TTS_SHEET(