Написание пользовательского плагина TinyMCE с логикой на основе Java

Я новичок в разработке плагинов, и что касается школьного проекта, над которым я работаю, мне необходимо разработать функцию преобразования голоса в речь, которая позволяет пользователю произносить ввод в текстовый редактор, в этом случае я ограничен Редактор TinyMCE. Мне дали для работы уже хорошо разработанную библиотеку распознавания речи на Java под названием CMU Sphinx-sphinx4.

Итак, теперь моя проблема. Sphinx4 — это java-библиотека, содержащая всю логику, которую мне нужно использовать для создания плагина. Но с TinyMCE я не могу писать плагин на javascript. Я попытался написать простую демонстрацию, но безуспешно заставить плагин работать. Вот фрагменты кода
1. Index.html

<!DOCTYPE html>
<html>
<head>
    <script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script>
    tinymce.init({
        selector:'textarea',
        plugins: 'voiceDictation',
        toolbar: 'voiceDictation'
    });
</script>
</head>
<body>
<textarea>Testing voiceDictation</textarea>
</body>
</html>
  1. Диктовать.java

    package javapackage;
    import edu.cmu.sphinx.api.Configuration;
    import edu.cmu.sphinx.api.LiveSpeechRecognizer;
    
    import java.io.IOException;
    
    public class Dictate {
    public static LiveSpeechRecognizer dictate() throws IOException {
        Configuration configuration = new Configuration();
    
    
    
     configuration.setAcousticModelPath
     ("resource:/edu/cmu/sphinx/models/en-us/en-us");
    configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
    configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");
    
    LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration);
    recognizer.startRecognition(true);
    return recognizer;
    }
    }
    
  2. плагин.js

    import _ from 'lodash';
    
    const plugin = (editor) => {
    editor.addButton('voiceDictation', {
    text: 'voiceDictation',
    icon: false,
    onclick: () => {
    var recognizer = Packages.javapackage.Dictate.dictate;
    var result = recognizer.getHypothesis();
    
        editor.windowManager.open({
            title: 'voiceDictation plugin',
            body: [
                { type: 'textbox', name: {result} }
            ],
    
    
    })
    }
    })
    };
    
    export default plugin;
    
  3. Index.js

    import plugin from './plugin';
    
    tinymce.PluginManager.add('voiceDictation', plugin);
    

Любая помощь, какой бы минимальной она ни была, будет принята с благодарностью


person tenas ryan    schedule 22.05.2018    source источник


Ответы (1)


Java и javascript — очень разные языки, и вы редко можете использовать java-библиотеки из javascript, если только вы не настроите сервер, который будет запускать java-библиотеку и связываться с ней по сети. Javascript в браузере имеет очень ограниченные возможности для взаимодействия с другим программным обеспечением. Для вашей задачи вы можете использовать библиотеку распознавания речи javascript, например

Chrome Web Speech API — работает только в Chrome.

Dictate.js — работает и в Firefox, но где-то требует сервера. Все равно не будет работать в некоторых браузерах.

Вы можете поискать другие.

person Nikolay Shmyrev    schedule 22.05.2018
comment
Большое спасибо за ответ. Одна вещь, которую я хотел бы отметить, это тот факт, что я ограничен использованием CMU Sphinx 4. - person tenas ryan; 23.05.2018