<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Запись и распознавание аудио в браузере с помощью JavaScript

Запись и распознавание аудио в браузере с помощью JavaScript

Запись аудио в браузере и его последующее распознавание — это задачи, которые можно решить с помощью современных веб-технологий. В этой статье мы рассмотрим, как записать аудио с помощью JavaScript и отправить его на внешний сервис для распознавания речи.

Основные этапы реализации

Запись аудио с помощью WebRTC: - Используем WebRTC API (MediaDevices и MediaRecorder) для захвата аудио из микрофона.

Отправка аудио на сервер: - Передаем записанный файл в API внешнего сервиса для распознавания речи (например, Google Cloud Speech-to-Text или Azure Speech).

Получение результата: - Получаем текстовый результат от сервиса и отображаем его на странице.

Шаг 1: Запись аудио

Мы начнем с создания функции, которая запрашивает доступ к микрофону пользователя и записывает аудио.

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Запись и распознавание аудио</title>
</head>
<body>
    <h1>Запись и распознавание аудио</h1>
    <button id="start-btn">Начать запись</button>
    <button id="stop-btn" disabled>Остановить запись</button>
    <p>Распознанный текст: <span id="transcription">...</span></p>

    <script src="app.js"></script>
</body>
</html>

JavaScript: Запись аудио

let mediaRecorder;
let audioChunks = [];

const startButton = document.getElementById('start-btn');
const stopButton = document.getElementById('stop-btn');
const transcriptionField = document.getElementById('transcription');

// Запрос доступа к микрофону и настройка MediaRecorder
startButton.addEventListener('click', async () => {
    const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
    mediaRecorder = new MediaRecorder(stream);

    mediaRecorder.ondataavailable = (event) => {
        audioChunks.push(event.data);
    };

    mediaRecorder.onstop = () => {
        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });
        audioChunks = [];
        sendAudioToServer(audioBlob);
    };

    mediaRecorder.start();
    startButton.disabled = true;
    stopButton.disabled = false;
});

// Остановка записи
stopButton.addEventListener('click', () => {
    mediaRecorder.stop();
    startButton.disabled = false;
    stopButton.disabled = true;
});

Шаг 2: Отправка аудио на внешний сервис

Записанное аудио нужно отправить на сервер для обработки. В этом примере мы используем Fetch API для отправки аудиофайла в формате WebM на внешний API.

Пример отправки аудио

async function sendAudioToServer(audioBlob) {
    const formData = new FormData();
    formData.append('audio', audioBlob);

    try {
        const response = await fetch('https://example.com/api/speech-to-text', {
            method: 'POST',
            body: formData,
        });

        if (response.ok) {
            const result = await response.json();
            transcriptionField.textContent = result.transcription || 'Нет текста';
        } else {
            transcriptionField.textContent = 'Ошибка распознавания';
        }
    } catch (error) {
        console.error('Ошибка при отправке аудио:', error);
        transcriptionField.textContent = 'Ошибка при соединении с сервером';
    }
}

Шаг 3: Настройка внешнего API

Для обработки аудио потребуется внешний сервис. Вот несколько популярных вариантов:

Google Cloud Speech-to-Text: - Поддерживает множество языков. - Требуется создать проект в Google Cloud Console. - Отправляем аудио в формате FLAC или LINEAR16.

Azure Speech Service: - Удобен для интеграции с другими сервисами Microsoft. - Требуется ключ API и настройка на Azure Portal.

IBM Watson Speech to Text: - Бесплатный тариф с ограничением на количество запросов. - Поддерживает WebSocket для потоковой обработки.

Deepgram: - Простая настройка и поддержка WebM.

Пример настроек для Google Cloud Speech-to-Text

На стороне сервера вы преобразуете полученное аудио в подходящий формат и отправляете его в Google API:

from google.cloud import speech
import io

def transcribe_audio(audio_file):
    client = speech.SpeechClient()

    with io.open(audio_file, "rb") as f:
        content = f.read()

    audio = speech.RecognitionAudio(content=content)
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.WEBM_OPUS,
        sample_rate_hertz=48000,
        language_code="ru-RU",
    )

    response = client.recognize(config=config, audio=audio)

    return response.results[0].alternatives[0].transcript if response.results else "Нет текста"

Результат

После выполнения всех шагов пользователь может: 1. Запустить запись аудио. 2. Остановить запись. 3. Увидеть распознанный текст на экране.

Примечания и ограничения

  1. Формат аудио:
  2. Убедитесь, что формат записанного аудио совместим с API. Например, Google Cloud требует FLAC или LINEAR16.

  3. Ограничения браузера:

  4. Некоторые функции (например, доступ к микрофону) требуют HTTPS.

  5. Скорость распознавания:

  6. Зависят от скорости интернета и времени обработки API.

  7. Конфиденциальность:

  8. Убедитесь, что пользователи знают, как их данные обрабатываются и хранятся.

JavaScript предоставляет удобные инструменты для записи аудио в браузере, а интеграция с внешними сервисами позволяет легко добавить функцию распознавания речи. Это мощный способ улучшить пользовательский опыт и автоматизировать задачи, связанные с обработкой аудио.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.