Эффективное управление записями сегодня актуально как никогда. В наш цифровой век огромный объем информации – аудио, видео и многое другое – необходимо обрабатывать за ограниченное время. Это делает функцию расшифровки в реальном времени необходимой, поскольку она полезна во многих сценариях.
При проведении аудио- или видеоконференций эта функция записывает протоколы встреч, к которым я могу обратиться позже, что удобнее, чем писать их самостоятельно. Я видел, как мои дети пытаются делать заметки во время онлайн-курсов, поэтому я знаю, что этот процесс может быть намного проще с помощью функции транскрипции. Одним словом, она избавляет детей от необходимости записывать все, что говорит преподаватель, позволяя им сосредоточиться на самой лекции и легко просматривать содержание позже. Кроме того, живые субтитры предоставляют зрителям субтитры в реальном времени для более комфортного просмотра.
Как программист, я верю в то, что “действия говорят громче слов”. Именно поэтому я разработал функцию транскрипции в реальном времени с помощью возможности транскрипции в реальном времени из ML Kit.
Демонстрация
Эта функция транскрибирует до 5 часов речи на китайский, английский (или оба) и французский языки в режиме реального времени. Кроме того, выходной текст снабжен пунктуацией и содержит временные метки.
Эта функция имеет некоторые требования: поддержка французского языка зависит от модели мобильного телефона, в то время как китайский и английский языки доступны на всех моделях мобильных телефонов. Кроме того, для работы функции требуется подключение к Интернету.
Итак, давайте перейдем к сути этой статьи: Как я разработал эту функцию транскрипции в реальном времени.
Процедура разработки
i. Проведите необходимую подготовку. Это подробно описано в разделе “Ссылки”.
ii. Создайте и затем настройте распознаватель речи.
MLSpeechRealTimeTranscriptionConfig config = new MLSpeechRealTimeTranscriptionConfig.Factory()
// Set the language, which can be Chinese, English, both Chinese and English, or French.
.setLanguage(MLSpeechRealTimeTranscriptionConstants.LAN_ZH_CN)
// Punctuate the text recognized from the speech.
.enablePunctuation(true)
// Set the sentence offset.
.enableSentenceTimeOffset(true)
// Set the word offset.
.enableWordTimeOffset(true)
.create();
MLSpeechRealTimeTranscription mSpeechRecognizer = MLSpeechRealTimeTranscription.getInstance();
iii. Создайте обратный вызов для слушателя результатов распознавания речи.
// Use the callback to implement the [MLSpeechRealTimeTranscriptionListener](https://developer.huawei.com/consumer/en/doc/development/hiai-References/mlspeechrealtimetranscriptionlistener-0000001159518088) API and methods in the API.
Protected class SpeechRecognitionListener implements MLSpeechRealTimeTranscriptionListener{
@Override
public void onStartListening() {
// The recorder starts to receive speech.
}
@Override
public void onStartingOfSpeech() {
// The speech recognizer detects the user speaking.
}
@Override
public void onVoiceDataReceived(byte[] data, float energy, Bundle bundle) {
// Return the original PCM stream and audio power to the user. The API does not run in the main thread, and the return result is processed in a sub-thread.
}
@Override
public void onRecognizingResults(Bundle partialResults) {
// Receive recognized text from **MLSpeechRealTimeTranscription**.
}
@Override
public void onError(int error, String errorMessage) {
// Callback when an error occurs during recognition.
}
@Override
public void onState(int state,Bundle params) {
// Notify the app of the recognizer status change.
}
}
iv. Привяжите распознаватель речи.
mSpeechRecognizer.setRealTimeTranscriptionListener(new SpeechRecognitionListener());
v. Вызовите startRecognizing, чтобы начать распознавание речи.
mSpeechRecognizer.startRecognizing(config);
vi. Остановите распознавание и освободите ресурсы, занятые распознавателем, когда распознавание будет завершено.
if (mSpeechRecognizer!= null) {
mSpeechRecognizer.destroy();
}
Ссылки
- Настройка необходимой информации во время подготовки
- Добавление подключаемого модуля и адреса репозитория Maven, а также настройка зависимостей сборки