Удобная Транскрипция Для Быстрой Обработки Аудиозаписей



Описание Преобразование аудио в текст имеет множество приложений, таких как создание субтитров для видео, протоколов встреч и транскрипций интервью.

С сервисом ML Kit процесс становится намного проще: он очень точно преобразует аудиозаписи в текст с правильной пунктуацией.



Подготовка к разработке

Настройте репозиторий Huawei Maven и интегрируйте SDK для транскрипции аудио.

Подробное описание процесса можно найти Здесь .



Указание разрешений в файле AndroidManifest.xml

Открыть файл AndroidManifest.xml в папке основной .

Добавьте разрешения на подключение к сети, доступ к состоянию сети и чтение данных хранилища перед .

Обратите внимание, что необходимо запрашивать динамические разрешения.

Иначе будет ошибка Доступ запрещен .

  
  
  
  
  
  
   

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />



Процесс развития



Создание и инициализация механизма транскрипции звука

Переопределить метод onCreate в классе Основная деятельность создать механизм транскрипции звука.



private MLRemoteAftEngine mAnalyzer; mAnalyzer = MLRemoteAftEngine.getInstance(); mAnalyzer.init(getApplicationContext()); mAnalyzer.setAftListener(mAsrListener);

Использовать MLRemoteAftSetting настроить двигатель.

В настоящее время сервис поддерживает стандартный китайский и английский языки, поэтому для параметра mЯзык есть только варианты жж И ru .



MLRemoteAftSetting setting = new MLRemoteAftSetting.Factory() .

setLanguageCode(mLanguage) .

enablePunctuation(true) .

enableWordTimeOffset(true) .

enableSentenceTimeOffset(true) .

create();

Параметр включить пунктуацию указывает, должна ли пунктуация автоматически добавляться к полученному тексту.

Значение по умолчанию: ЛОЖЬ .

Если вы установите этот параметр на истинный , полученный текст будет автоматически расставлен пунктуацией, и если ЛОЖЬ - знаков препинания не будет. Параметр EnableWordTimeOffset указывает, добавлять ли временную метку к каждому аудиосегменту.

Значение по умолчанию: ЛОЖЬ .

Регулируйте эту настройку только в том случае, если продолжительность записи меньше минуты.

Если значение параметра истинный , временные метки будут возвращены после расшифровки.

Эти параметры используются при расшифровке коротких аудиозаписей длительностью не более минуты.

Если значение параметра ЛОЖЬ , будет возвращена только аудиозапись.

Параметр EnableSentenceTimeOffset указывает, добавлять ли метку времени к каждому предложению в аудиозаписи.

Значение по умолчанию: ЛОЖЬ .

Если значение параметра истинный , временные метки будут возвращены после расшифровки.

Если значение параметра ЛОЖЬ , будет возвращена только аудиозапись.



Создайте обратный вызов прослушивателя для обработки результата расшифровки.



private MLRemoteAftListener mAsrListener = new MLRemoteAftListener()

После инициализации прослушивателя вызовите startTask в слушателе AftListener начать расшифровку.



@Override public void onInitComplete(String taskId, Object ext) { Log.i(TAG, "MLRemoteAftListener onInitComplete" + taskId); mAnalyzer.startTask(taskId); }

Переопределить методы onUploadProgress , onEvent И onResult в слушателе MLRemoteAftListener .



@Override public void onUploadProgress(String taskId, double progress, Object ext) { Log.i(TAG, " MLRemoteAftListener onUploadProgress is " + taskId + " " + progress); } @Override public void onEvent(String taskId, int eventId, Object ext) { Log.e(TAG, "MLAsrCallBack onEvent" + eventId); if (MLAftEvents.UPLOADED_EVENT == eventId) { // The file is uploaded successfully. showConvertingDialog(); startQueryResult(); // Obtain the transcription result. } } @Override public void onResult(String taskId, MLRemoteAftResult result, Object ext) { Log.i(TAG, "onResult get " + taskId); if (result != null) { Log.i(TAG, "onResult isComplete " + result.isComplete()); if (!result.isComplete()) { return; } if (null != mTimerTask) { mTimerTask.cancel(); } if (result.getText() != null) { Log.e(TAG, result.getText()); dismissTransferringDialog(); showCovertResult(result.getText()); } List<MLRemoteAftResult.Segment> segmentList = result.getSegments(); if (segmentList != null && segmentList.size() != 0) { for (MLRemoteAftResult.Segment segment : segmentList) { Log.e(TAG, "MLAsrCallBack segment text is : " + segment.getText() + ", startTime is : " + segment.getStartTime() + ".

endTime is : " + segment.getEndTime()); } } List<MLRemoteAftResult.Segment> words = result.getWords(); if (words != null && words.size() != 0) { for (MLRemoteAftResult.Segment word : words) { Log.e(TAG, "MLAsrCallBack word text is : " + word.getText() + ", startTime is : " + word.getStartTime() + ".

endTime is : " + word.getEndTime()); } } List<MLRemoteAftResult.Segment> sentences = result.getSentences(); if (sentences != null && sentences.size() != 0) { for (MLRemoteAftResult.Segment sentence : sentences) { Log.e(TAG, "MLAsrCallBack sentence text is : " + sentence.getText() + ", startTime is : " + sentence.getStartTime() + ".

endTime is : " + sentence.getEndTime()); } } } }



Обработка результата расшифровки в режиме опроса

После завершения расшифровки позвоните getLongAftResult чтобы получить результат. Обрабатывайте результат раз в 10 секунд.

private void startQueryResult() { Timer mTimer = new Timer(); mTimerTask = new TimerTask() { @Override public void run() { getResult(); } }; mTimer.schedule(mTimerTask, 5000, 10000); // Process the obtained long speech transcription result every 10 seconds. } private void getResult() { Log.e(TAG, "getResult"); mAnalyzer.setAftListener(mAsrListener); mAnalyzer.getLongAftResult(mLongTaskId); }



Как работает функция в приложении



Удобная транскрипция для быстрой обработки аудиозаписей

Создайте и запустите приложение со встроенной функцией транскрипции звука.

Затем выберите аудиофайл на своем устройстве и преобразуйте аудио в текст. Теги: #Машинное обучение #Android #Разработка Android #Разработка мобильных приложений #Huawei #машинное обучение #HMS #аудио

Вместе с данным постом часто просматривают: