我是插件开发的新手,关于我正在研究的学校项目,我需要开发语音到语音功能,允许用户在文本编辑器中输入输入,在这种情况下我是受限于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}
}
}
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>
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;
}
}
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;
任何帮助,无论多么微不足道,都会非常感激
答案 0 :(得分:0)
Java和javascript是非常不同的语言,除非你设置一个运行java库并通过网络联系它的服务器,否则很少能使用javascript中的java库。浏览器中的Javascript与其他软件交互的能力非常有限。对于您的任务,您可以使用javascript语音识别库,例如
Chrome Web Speech API - 仅适用于Chrome
Dictate.js - 也适用于Firefox,但需要服务器。无论如何都无法在某些浏览器中使用。
您可以搜索其他人。