Commit eee97a35 authored by Yoann HOUPERT's avatar Yoann HOUPERT

add persistance resume

parent 8bdc8b34
MODELS_PATH=../models/current_model/hublot_model/
MODEL_PATH_OFFLINE=../models/current_model/
MODELS_PATH=/home/yhoupert/1To/Models/MODEL_BIG/current_model/hublot_model/
MODEL_PATH_OFFLINE=/home/yhoupert/1To/Models/MODEL_BIG/current_model/
RESUME_PATH=/home/yhoupert/1To/Hublot/Developpement/hublot/resume
OFFLINE_PORT=8888
YAML=/opt/models/gmm_hmm3.yaml
NB_WORKERS=2
ASD_SERVER_IP="localhost"
ASD_CONTROL_PORT=8881
ASD_STREAM_PORT=8882
DEBUG="lib:*"
\ No newline at end of file
NB_WORKERS=1
DEBUG="lib:*"
......@@ -103,8 +103,7 @@ robot = {
},
recordParticipant(easyrtcid) {
robot.socket.emit('new_user', {userId : easyrtcid, roomId : robot.room});
robot.socket.emit('new_user', {userId: easyrtcid, roomId: robot.room});
robot.getUserStream(easyrtcid);
robot.recordedParticipantsWS.push(easyrtcid);
},
......@@ -158,7 +157,7 @@ robot = {
console.log(e);
});
robot.socket.on('resume_data_'+room, hyp => {
robot.socket.on('resume_data_' + room, hyp => {
if (hyp.status === 0) {
if (hyp.result !== undefined && hyp.result.final) {
const transcription = ((hyp.result.hypotheses)[0]).transcript;
......
......@@ -11,8 +11,12 @@ services:
- offline-server
volumes:
- ./media:/opt/media
- ${RESUME_PATH}:/usr/src/app/hublot/resume
ports:
- "3000:3000"
env_file: .env
environment:
- RESUME_PATH
recommender:
image: linagora/recommender
......
......@@ -55,7 +55,7 @@ class Asd extends EventEmitter {
this.init();
}, 2000);
}
try {
const controlTcpClient = new net.Socket();
controlTcpClient.once('error', err => {
......
......@@ -95,7 +95,6 @@ module.exports = config => {
connectionToClient.send(xmlHttp.responseText);
} catch (err) {
console.error('proxy: recoRecoWS error', err);
console.error('It is probably already close');
}
} else {
console.error('Online reco: error trying to reach http://%s:%s/resources',
......@@ -121,13 +120,12 @@ module.exports = config => {
connectionToKaldi.on('open', () => {
connectionToKaldi.on('message', message => {
try {
const msgJson = JSON.parse(message);
msgJson.userId = userId;
msgJson.roomId = roomId;
console.log('room transcription '+roomId+' ==== ', msgJson)
socket.emit('resume_data_'+roomId, msgJson);
console.log('room transcription ' + roomId + ' ==== ', msgJson);
socket.emit('resume_data_' + roomId, msgJson);
} catch (err) {
// Sometimes, the client will close the connection unexpectedly
// (e.g. when stopping). This is expected
......@@ -167,9 +165,9 @@ module.exports = config => {
socket.on('new_user', async data => {
const userId = data.userId;
const roomId = data.roomId;
resume.createFolder('_'+roomId);
resume.createFolder('_' + roomId);
const streamData = resume.generateStream(roomId)
const streamData = resume.generateStream(roomId);
let transcriptor;
if (config.asd.isUse) {
......@@ -215,7 +213,6 @@ module.exports = config => {
return {
create: resume => {
//resume.createFolder();
const stompClient = createStompClient();
audioSocket(resume);
......
......@@ -34,73 +34,11 @@ const successCode = 200;
module.exports = ffmpeg;
let self = module.exports = (config, resumeConfig) => {
const self = module.exports = (config, resumeConfig) => {
let timestamp;
let userConf = {};
const userConf = {};
function parserTranscription(transcription) {
transcription = `full_merged S0 0 17.14 ce test performance théâtrale musique plastique autour du thème de l' intelligence artificiel <unk> ce projet très versent par les travaux de la nation à la faire une <unk> personnage un groupe de la culture populaire moderne qui dès les années trente parce que vous avez l' instant même de l' informatique peuvent unique et de de
full_mergedS0 17.59 26.43 notre mission de porte sur une scène de cette version à la tête son célèbre test de tueries <unk> point juste évaluer l' attitude des faits je sortais sérénité la présidentielle
full_merged S3 27.92 41.26 cette proposition théâtrale met en scène trois comédien qui inter agi sur le plateau avec plusieurs forme d' intelligence artificiers <unk> ces échanges leurs mots musicaux ou qui naissent existe <unk>
full_merged S3 41.26 55.42 <unk> relève autant les perspectives vertigineuse que les limites actuel de vire <unk> entre ces confrontations <unk> des trois chercheurs propose <unk> liens procéder de fabrication me de films d' animation on directe
full_merged S3 55.42 64.18 <unk> une vise une vision distanciée <unk> et poétique <unk> de ces qui c' est le jour <unk> dans les rapports de l' humain pour machines qu' il a créé
full_merged S10 64.18 67.97 il y a le lit au
full_merged S10 67.97 73.12 et dans ce sens
full_merged S10 73.87 79.72 pourquoi c' est une avancée c' est en train de
full_merged S10 79.72 86.22 il y a vraiment
full_merged S10 86.64 93.15 ça ne avant <unk> actif des avancées techniques
full_merged S15 104.03 116.13 ce <unk> personne ne peut répondre à ces questions et prédire dans quelle mesure aille dans quel sens <unk> ilias a bouleversé l' humanité qu' à car tous ces jouer s' écrit en ce moment à une vitesse font
full_merged S15 116.13 124.64 <unk> mais il nous semble importante que la réflexion sur le sujet <unk> ne se limite pas aux prises de parole des experts <unk> ou au projections des industriels
full_merged S15 125.06 141.9 en portant cette problématique au théâtre à notre ambition et d' inciter le public à s' interroger sur les enjeux <unk> liés au progrès de l' ira s à envisager d' autres perspectives d' autres dans la s pour appréhender ses sujets il y a se sentir légitime pour participer au débat
full_merged S23 141.9 146.39 <unk> trois chercheurs travailler dans un laboratoire non boutiques décision sortie ciel
full_merged S23 146.39 165.84 <unk> il se connaissent bien collabore ensemble depuis longtemps les par le peut il s' agit sont semble extrêmement terre natale être des mondes et remonte <unk> l' ensemble de formules sorte ballet <unk> a non seulement d' expérience de manipulation et d' accent abstraite <unk> de tout se dégage un propos sur le rapport <unk> des humain ou machines est à dire
full_merged S26 165.84 171.29 c' était avec alain le chef du tchad divers lui avoue les échanges vers vos sont les plus nombreux
full_merged S26 171.31 184.17 <unk> à la même si la dirigeants ce qui se matériels et sur scène à travers sa voix <unk> elle a le enrichissants vocabulaire et sa compréhension comme on communique en avec son entourage <unk> la façon de ailier qui est à la une source de discussions et parfois de conflits entre les cherche
full_merged S0 184.17 193.53 parmi les robots qui nous en tout il y a un petit peu d' argent qu' on va c' est ce qui s' appelle à la discuter avec les choses et d' autres sa spécialité c' est la conscience qu' il soit
full_merged S0 193.88 197.41 il a été programmés pour donner une vision qui est conscient d' exister <unk>
full_merged S43 197.41 199.06
full_merged S3 199.06 214.43 <unk> grâce à la traîne dit sage profond de plus en plus de quatre vote sont capables de progresser en son prénom pas comme on versets avec des humains <unk> à l' hein <unk> fait partie de cette famille de robot <unk> qui finit celle genre par échapper à leur quand cette <unk>
full_merged S3 214.43 221.86 <unk> il à prendre des mots créer des liens organise son discours <unk> jour après jour spectacle après spectacles
full_merged S10 222.03 237.39 sur scène à l' année quand même qui financent sur le site spectacle <unk> un modèle peuvent s' il avait vraiment ça c' est la guerre est maintenant à laquelle seuls deux pour cent et les gens répondent il l' avait suivant scène a formé
full_merged S15 237.86 254.35 <unk> à une époque où la frontière entre le monde le virtuel et il y réel la vraie vie <unk> et de plus en plus difficile à tracer alain un quart me bio qui ont dû numérique dans le quotidien tout autant que les des clauses allemands du spectacle
full_merged S15 254.35 268.23 <unk> une oeuvre des jamais définitivement fermé dans un temps il y a lieu <unk> la communication qui est faite autour d' une performance <unk> ainsi que des discussions et des réactions qu' elle suscite <unk> de fond partent en sont parties intégrantes <unk>
full_merged S39 268.37 282.57 <unk> alan participent à cette cette allemande du spectacle dans l' espace tant il était veillé sur scène <unk> avant et après le spectacle <unk> <unk> et que participer aux discussions au débat et même aidé à évacuer des gens si jamais la larmes un sont dit il y a un passionné
full_merged S41 282.57 289.57 les et or seul sur scène bon sharon dans le secteur cette aron bon à ces grands qui semble très rudimentaires c' est-à-dire
full_merged S42 289.57 294.99 et selon <unk> les regards nous nous on vous vouliez construit
full_merged S43 295.16 298.69 oui
full_merged S42 298.69 306.76 quoi que j' ai encore vraiment réfléchit les regarde peut bouger loi ont beau nous devant
full_merged S41 306.76 311.18 lors nous exécutif une bouger bras de vote en bas
full_merged S45 311.18 314.5 <unk> ou à un rang <unk> impressionnant
full_merged S41 314.5 322.18 <unk> ça bien examineront beau méditatif <unk> il fait un tour autour du roubaud puis prendre du recul
full_merged S45 322.3 325.82 bon mais qu' est-ce qui s' est passé les lignes très complètement cassette
full_merged S41 327.66 335.78 dans sa tête un découvre que c' était bertrand déguisé en rendons inquiète il commence à se précipiter dans la maquettes du ligne tout
full_merged S45 335.91 342.4 <unk> par rares qui osé qui n' a pas passer l' entité aspect pierre in bertrand
full_merged S15 342.4 361.73 nous avons commencé a accumulé des textes destiné à être lues des textes destiné à être dit pendant le spectacle <unk> des petites idée des morceaux des références <unk> des débats entre deux trois <unk> de nous trois sur des sujets de discorde d' autre chose encore <unk>
full_merged S54 361.73 370.53 alain un agent de conversation qui échanges sur scène avec les comédiens compte dans le spectacle <unk> en bord de la scène il est accessible au public il y a le site de la compagnie
full_merged S54 370.53 384.68 <unk> c' est dans même de compétence mais qu' ils ont sorti celle la conscience de soit le spectacle vivre il y a des maisons logicielles permis celle de reconnaissance aucun <unk> pour le dix-sept la botte questions-réponses apprentissage et caetera <unk> elle est celle de celle de local <unk> et
full_merged S26 384.68 392.88 il y a aussi des besoins matériels un ordinateur dédié à l' écran un micro plus rend plus créer près un puis plus capter sont <unk> pas non plus
full_merged S58 392.88 411.58 puisque le règlement ça une particularité s reconnaît la voix de celui des trjeanois comme une femme <unk> il est opérationnelle en ligne est en ligne pour le spectacle soissons connexion entament <unk> sont mortes à face et sous somme en pâtissier le pour permettre aux trois auteurs de de street <unk> apprentissage mais alors là ils sont sur etc
full_merged S43 411.58 416.03
full_merged S45 416.03 429.32 on a quelques hypothèse bex pensions pas là un peu aussi faire de la reconnaissance si les yeux <unk> annan est équipé d' une caméra <unk> ariane et de il y a une ou plus
full_merged S10 429.32 440.58 s parmi les solutions envisager on n' en partenariat avec cette technologie le bon sens <unk> une ou deux résidents une à deux semaines au laboratoire pour l' instant
full_merged S10 440.94 450.82 conception informations définition du projet intégration une ils voient formation sur la maintenance administration <unk> nuit il y en matin les rites de ce point
full_merged S58 450.82 454.02 l' apprentissage superviser <unk> <unk>
full_merged S67 454.02 465.22 en s' inspire anglais fonctionnement du cerveau <unk> en place <unk> entre l' entrée et la sortie <unk> des couches successives <unk> composée chacune de numéro un une forme
full_merged S41 465.22 472.25 les noms des différentes couches sont reliés par des commet sur ce inactive <unk>
full_merged S70 472.25 480.92 la première couches contient autant de ne renie qu' il y a d' entrer dix mille dans notre exemple <unk> la dernière contient au tomber le rôle qu' il y a deux sortie
full_merged S39 480.92 482.69 un scène
full_merged S39 482.88 485.34 le fonctionnement ce système est extrêmement ça
full_merged S26 485.34 491.39 on reçoit des chiffres de la coucher derrière les indices yann est rendre à l' origine d' avoir des ne rhône de l' accouchement
full_merged S58 491.39 496.92 l' information passeport à vecteur qui agit en multipliant la valeur par un coefficient
full_merged S43 496.92 499.5
full_merged S67 499.5 507.21 c' est censé coefficient qui centaines pourtant <unk> s' y sont correctement choisi <unk> le algorithmes fonctionnement <unk>
full_merged S41 507.21 512.31 on commence par mètre des coefficient pour hasards et en test le algorithmes
full_merged S77 513.31 517.74 <unk> malheureusement ça ne marche pas
full_merged S39 517.74 527.65 pour que le algorithmes fonctionne il faut long trenet avec un très grand nombre d' exemples préalablement a noté par des humains <unk> qui ont décidé avec le observe aussi millions non il y avait un charmant la coupe
full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les images pour identifier définitivement pencha sur une photo <unk> mais dans certains cas <unk> il entendra plusieurs millions à l' algorithmes pour un résultat aussi`;
const lines = transcription.split('\n');
const json = {
entries: []
......@@ -163,16 +101,14 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
request(options, (error, response, body) => {
console.log(body);
if (!error && response.statusCode === successCode) {
fs.writeFile(resumeConfig.resumeFolder + '/resume_'+roomId+'.txt', util.inspect(body), 'utf-8', (error) =>{
console.log('Failed to write file')
console.log(error)
console.log('Failed to write file')
fs.writeFile(resumeConfig.resumeFolder + '/resume_' + roomId + '.txt', util.inspect(body), 'utf-8', error => {
if (error !== null) {
console.log(error);
}
});
}
if(body === undefined){
console.log('####')
console.log('Summary was empty')
if (body === undefined) {
console.log('Summary was empty');
}
});
}
......@@ -181,8 +117,8 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
let nbFile = 0;
let memoryFile;
const cmd = ffmpeg();
fs.readdirSync(config.folder.audioMerged +'_'+ roomId).forEach(file => {
cmd.input(config.folder.audioMerged +'_'+ roomId + '/' + file);
fs.readdirSync(config.folder.audioMerged + '_' + roomId).forEach(file => {
cmd.input(config.folder.audioMerged + '_' + roomId + '/' + file);
nbFile++;
memoryFile = file;
});
......@@ -191,7 +127,7 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
}
cmd.complexFilter('amix=inputs=' + nbFile + ':duration=first:dropout_transition=3')
.save(config.folder.audioMerged +'_'+roomId+ '/merged.wav')
.save(config.folder.audioMerged + '_' + roomId + '/merged.wav')
.on('end', () => {
// OfflineTranscription(memoryFile, (err, response, body) => {
// const textChunk = body.toString('utf8');
......@@ -203,36 +139,33 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
}
return {
createFolder: (room) => {
if (!fs.existsSync(config.folder.audioRaw+room)) {
fs.mkdirSync(config.folder.audioRaw+room);
}
if (!fs.existsSync(config.folder.audioWav+room)) {
fs.mkdirSync(config.folder.audioWav+room);
createFolder: room => {
if (!fs.existsSync(config.folder.audioRaw + room)) {
fs.mkdirSync(config.folder.audioRaw + room);
}
if (!fs.existsSync(config.folder.audioMerged+room)) {
fs.mkdirSync(config.folder.audioMerged+room);
if (!fs.existsSync(config.folder.audioWav + room)) {
fs.mkdirSync(config.folder.audioWav + room);
}
if (!fs.existsSync(resumeConfig.resumeFolder)) {
fs.mkdirSync(resumeConfig.resumeFolder);
if (!fs.existsSync(config.folder.audioMerged + room)) {
fs.mkdirSync(config.folder.audioMerged + room);
}
},
generateStream: (roomId) => {
generateStream: roomId => {
if (timestamp === undefined) {
timestamp = new Date().getTime();
}
const name = uuidv1();
const path = config.folder.audioRaw + '_' +roomId + '/' + name + '.wav';
const path = config.folder.audioRaw + '_' + roomId + '/' + name + '.wav';
const streamData = {
wstream: fs.createWriteStream(path),
pathFile: path,
fileName: name,
room : roomId,
room: roomId,
timestamp: new Date().getTime()
};
if(userConf[roomId] === undefined){
console.log('INFO ROOM ADD USER', roomId)
if (userConf[roomId] === undefined) {
console.log('INFO ROOM ADD USER', roomId);
userConf[roomId] = 0;
}
userConf[roomId]++;
......@@ -249,7 +182,7 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
.input('anullsrc=sample_rate=' + config.audio.srate)
.inputFormat('lavfi')
.duration(delay)
.output(config.folder.audioWav +'_'+ streamData.room + '/silence_' + streamData.fileName + '.wav')
.output(config.folder.audioWav + '_' + streamData.room + '/silence_' + streamData.fileName + '.wav')
.on('end', () => {
console.log('generate audio file');
ffmpeg(streamData.pathFile)
......@@ -258,7 +191,7 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
.audioBitrate(config.audio.bitrate)
.audioChannels(config.audio.channels)
.audioFrequency(config.audio.srate)
.save(config.folder.audioWav +'_'+ streamData.room + '/' + streamData.fileName + '.wav')
.save(config.folder.audioWav + '_' + streamData.room + '/' + streamData.fileName + '.wav')
.on('error', err => {
--userConf[streamData.room];
console.log('An error occurred: ' + err.message);
......@@ -266,8 +199,8 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
.on('end', () => {
console.log('merge audio and silence');
ffmpeg()
.input(config.folder.audioWav +'_'+ streamData.room + '/silence_' + streamData.fileName + '.wav')
.input(config.folder.audioWav +'_'+ streamData.room + '/' + streamData.fileName + '.wav')
.input(config.folder.audioWav + '_' + streamData.room + '/silence_' + streamData.fileName + '.wav')
.input(config.folder.audioWav + '_' + streamData.room + '/' + streamData.fileName + '.wav')
.on('error', err => {
console.log('An error occurred: ' + err.message);
......@@ -279,7 +212,7 @@ full_merged S26 527.65 539.8 par l' enfant n' aura besoin que les quelques les i
resumeGenerator(streamData.room);
}
})
.mergeToFile(config.folder.audioMerged +'_'+ streamData.room + '/' + streamData.fileName + '.wav', config.folder.audio +'_'+ streamData.room);
.mergeToFile(config.folder.audioMerged + '_' + streamData.room + '/' + streamData.fileName + '.wav', config.folder.audio + '_' + streamData.room);
});
})
.run();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment