用基于java的逻辑编写TinyMCE自定义插件

时间:2018-05-22 11:42:35

标签: javascript java sphinx4

我是插件开发的新手,关于我正在研究的学校项目,我需要开发语音到语音功能,允许用户在文本编辑器中输入输入,在这种情况下我是受限于TinyMCE编辑器。我获得了一个已经发展得很好的java语音识别库,可以通过CMU Sphinx-sphinx4的名称来使用。

所以现在,我的问题。 Sphinx4是一个java库,它包含了我用来创建插件所需的所有逻辑。但是使用TinyMCE,我只能在javascript中编写插件。我尝试编写一个简单的演示,但没有成功使插件工作。以下是代码片段
1. Index.html

extension UITableViewDataSource where Self:UITableView {
   /**
    * EXAMPLE: tableView.cells//list of cells in a tableview
    */
   var cells:[UITableViewCell] {
       return (0..<self.numberOfSections).indices.map { (sectionIndex:Int) -> [UITableViewCell] in
           return (0..<self.numberOfRows(inSection: sectionIndex)).indices.compactMap{ (rowIndex:Int) -> UITableViewCell? in
               return self.cellForRow(at: IndexPath(row: rowIndex, section: sectionIndex))
         }
       }.flatMap{$0}
    }
}
  1. Dictate.java

    <!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>
    
  2. plugin.js

    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;
    }
    }
    
  3. Index.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;
    
  4. 任何帮助,无论多么微不足道,都会非常感激

1 个答案:

答案 0 :(得分:0)

Java和javascript是非常不同的语言,除非你设置一个运行java库并通过网络联系它的服务器,否则很少能使用javascript中的java库。浏览器中的Javascript与其他软件交互的能力非常有限。对于您的任务,您可以使用javascript语音识别库,例如

Chrome Web Speech API - 仅适用于Chrome

Dictate.js - 也适用于Firefox,但需要服务器。无论如何都无法在某些浏览器中使用。

您可以搜索其他人。