mirror of
https://github.com/ocogeclub/ocoge.git
synced 2024-11-21 15:19:48 +00:00
[update] Julius 実行ファイル及びカスタム辞書を更新。
This commit is contained in:
parent
481105d508
commit
5b955dd9c9
4
.gitignore
vendored
4
.gitignore
vendored
@ -3,8 +3,6 @@ node_modules/
|
||||
bin/
|
||||
build/
|
||||
*.zip
|
||||
push.sh
|
||||
n
|
||||
*.bak
|
||||
*.old
|
||||
*.lock
|
||||
|
||||
|
@ -39,7 +39,6 @@ module.exports = {
|
||||
package: packageTasks.package,
|
||||
checkLicenses: licenseTasks.checkLicenses,
|
||||
recompile: releaseTasks.recompile,
|
||||
prepareDemos: appengineTasks.prepareDemos,
|
||||
publish: releaseTasks.publish,
|
||||
publishBeta: releaseTasks.publishBeta,
|
||||
sortRequires: cleanupTasks.sortRequires,
|
||||
|
@ -865,14 +865,6 @@
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="ugj_child_openjtalk">
|
||||
<field name="voice">m001</field>
|
||||
<value name="talk">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">こんにちは!</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="ugj_child_irrecord">
|
||||
<value name="gpio">
|
||||
<shadow type="math_number">
|
||||
|
2
index.js
2
index.js
@ -140,7 +140,7 @@ Blockly.Msg["I2C_READ_DEVICE_TOOLTIP"] = "デバイスから指定したバイ
|
||||
Blockly.Msg["I2C_WRITE_DEVICE_TITLE"] = "i2c デバイスに %1 を送信";
|
||||
Blockly.Msg["I2C_WRITE_DEVICE_TOOLTIP"] = "i2c デバイスにデータを送信します。";
|
||||
|
||||
Blockly.Msg["UGJ_BME280_TITLE"] = "BME280(アドレス %1 )の計測値: %2 %3 %4";
|
||||
Blockly.Msg["UGJ_BME280_TITLE"] = "BME280(アドレス %1 )から %2 %3 %4 を取得";
|
||||
Blockly.Msg["UGJ_BME280_TOOLTIP"] = "環境センサーBME280で、気温(摂氏)、湿度(%)、気圧(hPa)を計測し、それぞれを変数に代入します。";
|
||||
Blockly.Msg["UGJ_BME280_READ_TEMP"] = "気温";
|
||||
Blockly.Msg["UGJ_BME280_READ_HUM"] = "湿度";
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
// 定数
|
||||
const ugj_const = {
|
||||
doc_root: '/home/pi/Documents/ocoge_docs/',
|
||||
doc_root: process.env["HOME"] + '/Documents',
|
||||
app_name: 'ocoge',
|
||||
mascot_path: './img/',
|
||||
mascot_defname: 'tamachee.png',
|
||||
@ -32,6 +32,7 @@ class elUtil {
|
||||
this.children = [];
|
||||
this.gpio_backend = ugj_const.pig;
|
||||
this.i2c_bus = ugj_const.i2c_defbus;
|
||||
this.doc_current = ugj_const.doc_root;
|
||||
}
|
||||
// 0で数値の桁合わせ : NUM=値 LEN=桁数
|
||||
zeroPadding(NUM, LEN) {
|
||||
@ -41,7 +42,7 @@ class elUtil {
|
||||
getUniqueFilepath() {
|
||||
let today = new Date();
|
||||
let filename = today.getFullYear() + '-' + this.zeroPadding((today.getMonth() + 1), 2) + '-' + this.zeroPadding(today.getDate(), 2) + '-' + this.zeroPadding(today.getHours(), 2) + '-' + this.zeroPadding(today.getMinutes(), 2) + '-' + this.zeroPadding(today.getSeconds(), 2);
|
||||
let filepath = this.path.join(ugj_const.doc_root, filename);
|
||||
let filepath = this.path.join(this.doc_current, filename);
|
||||
return filepath;
|
||||
}
|
||||
// リンクを外部ブラウザで開く
|
||||
@ -68,11 +69,12 @@ class elUtil {
|
||||
newFile() { this.setSaveFilepath(null); }
|
||||
// ワークスペースファイル読み込みの一連の動作のラッパ
|
||||
async loadWsFile() {
|
||||
let filepath = await this.openFile('xml', ugj_const.doc_root);
|
||||
let filepath = await this.openFile('xml', this.doc_current);
|
||||
if (filepath.length > 0) {
|
||||
if (this.saveFilepath === null) {
|
||||
this.setSaveFilepath(filepath);
|
||||
} //読み込みに失敗してもsaveFilepathが更新されてしまうのはちょっと具合が悪いかも
|
||||
this.doc_current = this.path.dirname(filepath);
|
||||
return this.readFromFile(filepath);
|
||||
} else {
|
||||
return '';
|
||||
@ -80,8 +82,9 @@ class elUtil {
|
||||
}
|
||||
// その他ファイル読み込みの一連の動作のラッパ
|
||||
async loadFile(ext) {
|
||||
let filepath = await this.openFile(ext, ugj_const.doc_root);
|
||||
let filepath = await this.openFile(ext, this.doc_current);
|
||||
if (filepath.length > 0) {
|
||||
this.doc_current = this.path.dirname(filepath);
|
||||
return this.readFromFile(filepath);
|
||||
} else {
|
||||
return '';
|
||||
@ -169,6 +172,7 @@ class elUtil {
|
||||
filter = { name: 'text file', extensions: ['txt'] };
|
||||
}
|
||||
let filename = await this.ipcRenderer.invoke('save_dialog', title, defName, filter);
|
||||
this.doc_current = this.path.dirname(filename);
|
||||
return filename;
|
||||
}
|
||||
// ファイル書き込み
|
||||
@ -206,20 +210,26 @@ class elUtil {
|
||||
savePrefsToLS() {
|
||||
let wc = '0';
|
||||
if (this.wsChanged) wc = '1';
|
||||
let o = { 'saveFilepath': this.saveFilepath, 'wsChanged': wc, 'mascotFilePath': this.mascotFilePath };
|
||||
let o = {
|
||||
'saveFilepath': this.saveFilepath,
|
||||
'wsChanged': wc,
|
||||
'mascotFilePath': this.mascotFilePath,
|
||||
'doc_current': this.doc_current
|
||||
};
|
||||
let s = JSON.stringify(o);
|
||||
localStorage.setItem(this.localStorage_fname, s);
|
||||
localStorage.setItem(ugj_const.localStorage_fname, s);
|
||||
}
|
||||
|
||||
// 設定(保存ファイルパスと未保存フラグ)をローカルストレージからロード
|
||||
loadPrefsFromLS() {
|
||||
let s = localStorage.getItem(this.localStorage_fname);
|
||||
let s = localStorage.getItem(ugj_const.localStorage_fname);
|
||||
if (s !== null) {
|
||||
let o = JSON.parse(s);
|
||||
this.setSaveFilepath(o.saveFilepath);
|
||||
if (o.wsChanged == '0') this.setWsChanged(false);
|
||||
else this.setWsChanged(true);
|
||||
if (o.mascotFilePath) this.setMascotFilePath(o.mascotFilePath);
|
||||
if (o.doc_current) this.doc_current = o.doc_current;
|
||||
}
|
||||
}
|
||||
|
||||
|
2
lib/beautify.min.js
vendored
2
lib/beautify.min.js
vendored
File diff suppressed because one or more lines are too long
6423
package-lock.json
generated
Normal file
6423
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -19,8 +19,8 @@
|
||||
},
|
||||
"homepage": "https://github.com/ocogeclub/ocoge#readme",
|
||||
"devDependencies": {
|
||||
"electron": "15.3.0",
|
||||
"electron-rebuild": "3.2.3"
|
||||
"electron": "^15.3.0",
|
||||
"electron-rebuild": "^3.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ocogeclub/amg8833": "file:local_modules/@ocogeclub/amg8833",
|
||||
@ -30,9 +30,9 @@
|
||||
"@tensorflow-models/knn-classifier": "^1.2.2",
|
||||
"@tensorflow-models/mobilenet": "^2.1.0",
|
||||
"@tensorflow/tfjs-node": "^3.11.0",
|
||||
"@vladmandic/face-api": "^1.5.3",
|
||||
"@vladmandic/face-api": "^1.5.7",
|
||||
"axios": "^0.24.0",
|
||||
"nodemailer": "^6.6.0",
|
||||
"nodemailer": "^6.7.0",
|
||||
"tensorset": "^1.2.9"
|
||||
}
|
||||
}
|
||||
|
@ -2864,7 +2864,7 @@ Blockly.JavaScript['ugj_spawn'] = function (block) {
|
||||
var statements_do = Blockly.JavaScript.statementToCode(block, 'do');
|
||||
var code = [
|
||||
`let child = require('child_process').spawn(${value_childprocess});`,
|
||||
`elec.addChild(child);`,
|
||||
`elutil.addChild(child);`,
|
||||
"child.stderr.on('data', data => { console.error(data.toString()) })",
|
||||
"child.stdout.on('data', async data => {",
|
||||
`${variable_data} = data.toString();`,
|
||||
@ -2902,33 +2902,6 @@ Blockly.JavaScript['aquestalk_pi'] = function (block) {
|
||||
return [code, Blockly.JavaScript.ORDER_NONE];
|
||||
};
|
||||
|
||||
// open jtalk
|
||||
Blockly.Blocks['ugj_child_openjtalk'] = {
|
||||
init: function () {
|
||||
this.appendValueInput("talk")
|
||||
.setCheck("String");
|
||||
this.appendDummyInput()
|
||||
.appendField("とおしゃべりする:声の種類")
|
||||
.appendField(new Blockly.FieldDropdown([["M001(男性)", "m001"], ["Takumi(男性)", "takumi"], ["Mei(女性)", "mei"], ["f01(女性)", "f01"]]), "voice");
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true, "shcmd");
|
||||
this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND);
|
||||
this.setStyle('special_blocks')
|
||||
this.setTooltip("日本語音声合成プログラム「openJTalk」を使用してしゃべります。声の種類を選べます。");
|
||||
this.setHelpUrl("");
|
||||
}
|
||||
};
|
||||
Blockly.JavaScript['ugj_child_openjtalk'] = function (block) {
|
||||
var value_talk = Blockly.JavaScript.valueToCode(block, 'talk', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var dropdown_voice = block.getFieldValue('voice');
|
||||
// var functionName = Blockly.JavaScript.provideFunction_(
|
||||
// 'fixText',
|
||||
// ['const ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ + ' = text => {return text;}']
|
||||
// );
|
||||
var code = `'echo ' + ${value_talk} + ' | ${ugj_const.executable_path}open_jtalk/open_jtalk -m ${ugj_const.executable_path}open_jtalk/htsvoices/${dropdown_voice}.htsvoice -x ${ugj_const.executable_path}open_jtalk/open_jtalk_dic_utf_8-1.11 -ow /dev/stdout | aplay --quiet', { shell: true }`;
|
||||
return [code, Blockly.JavaScript.ORDER_NONE];
|
||||
};
|
||||
|
||||
// fswebcam
|
||||
Blockly.Blocks['ugj_child_fswebcam'] = {
|
||||
init: function () {
|
||||
@ -2965,7 +2938,7 @@ Blockly.Blocks['ugj_child_julius'] = {
|
||||
}
|
||||
};
|
||||
Blockly.JavaScript['ugj_child_julius'] = function (block) {
|
||||
var code = `'${ugj_const.executable_path}julius/julius-simple', ['-C', '${ugj_const.executable_path}julius/dictation-kit-4.5/assistant.jconf', '-C', '${ugj_const.executable_path}julius/dictation-kit-4.5/am-gmm.jconf', '-quiet']`;
|
||||
var code = `'${ugj_const.executable_path}julius/julius-simple', ['-C', '${ugj_const.executable_path}julius/dictation-kit/am-gmm.jconf', '-gram', '${ugj_const.executable_path}julius/dic/assistant', '-nostrip']`;
|
||||
return [code, Blockly.JavaScript.ORDER_NONE];
|
||||
};
|
||||
// irrp.py - pigpioによる赤外線リモコンの学習
|
||||
|
Loading…
Reference in New Issue
Block a user