diff --git a/Troposphere Docs/InterfaceWithX11.txt b/Troposphere Docs/InterfaceWithX11.txt new file mode 100644 index 0000000..98bb0ed --- /dev/null +++ b/Troposphere Docs/InterfaceWithX11.txt @@ -0,0 +1,25 @@ + + +#=> EXIT +# 1. Mount essential pseudo-filesystems +mountpoint -q /opt/test/dual_rootfs/proc || mount -t proc /proc /opt/test/dual_rootfs/proc +mountpoint -q /opt/test/dual_rootfs/sys || mount -t sysfs /sys /opt/test/dual_rootfs/sys +mountpoint -q /opt/test/dual_rootfs/dev || mount --bind /dev /opt/test/dual_rootfs/dev +mountpoint -q /opt/test/dual_rootfs/dev/pts || mount -t devpts devpts /opt/test/dual_rootfs/dev/pts +mountpoint -q /opt/test/dual_rootfs/dev/shm || mount --bind /dev/shm /opt/test/dual_rootfs/dev/shm + +# 2. Mount the X11 socket and temp folders +mountpoint -q /opt/test/dual_rootfs/tmp || mount --bind /tmp /opt/test/dual_rootfs/tmp + +# 3. Copy the host X authority file into the chroot's root directory +cp /tmp/.serverauth.* /opt/test/dual_rootfs/root/.Xauthority 2>/dev/null + +#<= ENTER +apt update +apt install -y mesa-utils libgl1 libglx-mesa0 libgl1-mesa-dri x11-utils + +export DISPLAY=:0 +export XAUTHORITY=/root/.Xauthority + +# Launch whatever +chromium --no-sandbox diff --git a/Troposphere Docs/JiboOrgnl/OLDjibo-jetstream-service.json b/Troposphere Docs/JiboOrgnl/OLDjibo-jetstream-service.json new file mode 100755 index 0000000..eb303ab --- /dev/null +++ b/Troposphere Docs/JiboOrgnl/OLDjibo-jetstream-service.json @@ -0,0 +1,158 @@ +{ + "webCore": { + "serverPort": 8090, + "fileRoot": "/usr/local/var/www/jetstream", + "requestLogging": false + }, + "JetstreamService": { + "stacktracing": false, + "registryPort": 8181, + "serverPort": 8090 + }, + "JetService": { + "log_directory": "/var/log/jetstream" + }, + "HubClient": { + "proactive_url": "/v1/proactive", + "listen_url": "/v1/listen", + "listen_language": "en-US", + "xxx_override": { + "hub_port": 9000, + "hub_hostname": "172.24.84.137", + "entrypoint_hostname": "dev-entrypoint.jibo.com" + }, + "region-settings": { + "comment": "This is a switch, selected by the 'region' field setting in the robot's /var/jibo/credentials.json file", + "dev-entrypoint": { + "hub_port": 443, + "hub_hostname": "dev-hub.jibo.com", + "entrypoint_hostname": "dev-entrypoint.jibo.com" + }, + "alpha-entrypoint": { + "hub_port": 443, + "hub_hostname": "alpha-hub.jibo.com", + "entrypoint_hostname": "alpha-entrypoint.jibo.com" + }, + "stg-entrypoint": { + "hub_port": 443, + "hub_hostname": "stg-hub.jibo.com", + "entrypoint_hostname": "stg-entrypoint.jibo.com" + }, + "preprod-entrypoint": { + "hub_port": 443, + "hub_hostname": "preprod-hub.jibo.com", + "entrypoint_hostname": "preprod-entrypoint.jibo.com" + }, + "api": { + "hub_port": 443, + "hub_hostname": "neo-hub.jibo.com", + "entrypoint_hostname": "api.jibo.com" + } + }, + "encoding_type_comment": "This can be either LINEAR16, FLAC, or OGG_OPUS", + "encoding_type": "OGG_OPUS", + "encoding-settings": { + "OGG_OPUS": { + "streaming_rate": 1.2, + "channels": 1, + "sample_rate": 16000, + "bitrate": 64000, + "vbr": true + }, + "FLAC": { + "streaming_rate": 3.0, + "channels": 1, + "sample_rate": 16000, + "bps": 16 + } + } + }, + "AudioChannel": { + "block_duration_ms": 50, + "period_size": 85, + "buffer_size": 2048 + }, + "HJLogger": { + "speech_analytics_log_path": "/var/log/jetstream/hj_logs", + "comment-logging-fraction": "The probability that an HJ utterance will be logged -- range 0-1", + "logging_probability": 0.05, + "start_margin_ms": 500, + "end_margin_ms": 500 + }, + "RecogHJ": { + "config_path": "/usr/local/share/asr/hey_jibo", + "comment": "Positive margin values widen the HJ Phrase spotter's standard endpoints. The end_margin_ms also compensates for the Phrase Spotter's premature endpoint, which is around the beginning O in jibO", + "hj_start_margin_ms": 0, + "hj_end_margin_ms": 100 + }, + "HubAsr": { + "global_sosTimeout_sec": 3, + "global_maxSpeechTimeout_sec": 20, + "local_sosTimeout_sec": 2, + "local_maxSpeechTimeout_sec": 20 + }, + "RecogSpeakerID": { + "ubm_path": "/usr/local/share/asr/sensory_data_td/", + "client_path": "/var/jibo/asr/sensory_data_td/", + "comment": "change next property to 'sensory_log_path' to enable Sensory authenticator logging, 'xxxsensory_log_path' to disable", + "xxxsensory_log_path": "/var/jibo/asr/sensory_auth_logs", + "threshold": -1.2, + "confidence_margin": 2, + "margin-comment": "positive values for start and end margins widen the space around the speaker-id HJ", + "id_start_margin_ms": 250, + "comment2":"id_end_margin is used when retrying to ID with an audio segment, it also controls the end margin of the logged utts", + "id_end_margin_ms": 300, + "PHRASEver": "OFF" + }, + "RecogSpeakerEnroll": { + "ubm_path": "/usr/local/share/asr/sensory_data_td/", + "client_path": "/var/jibo/asr/sensory_data_td/", + "comment": "change next property to 'sensory_log_path' to enable Sensory enroller logging, 'xxxsensory_log_path' to disable", + "xxxsensory_log_path": "/var/jibo/asr/sensory_enroller_logs", + "speech_analytics_log_path": "/var/log/jetstream/enroller_logs", + "minEnrollUtts": 6, + "checkQuality": "LOW", + "margin-comment": "positive values for the start margin increase the amount of silence fed to the enroller before the HJ occurs", + "enroll_start_margin_ms": 250 + }, + "RecogEOS": { + "resource_path": "/usr/local/share/asr/jibo_energy_eos" + }, + "RecogNameLearning": { + "resource_path": "/usr/local/share/asr/namelearning", + "temp_path": "/var/jibo/asr/namelearning_temp/", + "speech_analytics_log_path": "/var/log/jetstream/namelearning_logs", + "g2p_service": "http://localhost:8089/tts_nbest_prons" + }, + "logging": { + "jibo_message_prefix": "C", + "channels": { + "console": { + "class": "ConsoleChannel", + "pattern": "%Y-%m-%d %H:%M:%S %s: [%p] %t" + }, + "syslog": { + "class": "RFC_5424_Channel", + "name": "jibo-jetstream-service", + "facility": "SYSLOG_DAEMON" + }, + "splitter": { + "class": "SplitterChannel", + "channels": "syslog" + } + }, + "loggers": { + "root": { + "level": "debug" + }, + "l1": { + "name": "JetService", + "level": "debug" + }, + "l2": { + "name": "Application", + "level": "debug" + } + } + } +} diff --git a/Troposphere Docs/JiboOrgnl/The Jetstream Service API.html b/Troposphere Docs/JiboOrgnl/The Jetstream Service API.html new file mode 100644 index 0000000..eb0d9b9 --- /dev/null +++ b/Troposphere Docs/JiboOrgnl/The Jetstream Service API.html @@ -0,0 +1,1018 @@ + + + + + The Jetstream Service API - Server - Wiki + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ +
+
+ + + + + + + + + + +
+
+
+ +
Page tree
+ + +
+ + + +
    +
    +
    +
+ + +
+
+ +
+
+ + + + +
+
+ + + + +
+ + + + + Skip to end of banner +
+ + + + + +Go to start of banner +
+ + +

+ The Jetstream Service API +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + + Skip to end of metadata +
+ + + + +Go to start of metadata +
+ + + +
+ +
+
+
+
+

 

Table of Contents

+
+
+
+

Service Description

Jetstream is a Jibo Platform Service that mediates a skill's interaction with the Hub (it replaces the ASRservice in Jibo V1). In this role it must handle requests from skills to recognize speech, it must engage onboard recognizers for HJ spotting, name learning and speaker ID, and it must pass along proactive trigger information from the skills to the Hub and back. The genesis of Jetstream's basic structure is visible in the Jetstream Flow Diagram at the end of this document.

Jetstream presents a URL-based API to skills via HTTP requests and Websocket messages. For the HTTP requests, the parameters are supplied as a JSON string in the body of a POST request to the given URL. Likewise the HTTP responses and Websocket messages supply their information to the skill as a JSON payload in the body of the response or message.

In this document, red colored text with a ⚠ symbol indicates a feature that should not be counted on due to  being either not-yet-implemented or likely to change soon.

The Jetstream HTTP API

Herewith is a thematically arranged list of all the HTTP-based commands Jetstream offers.

Local Turns: Skill-driven ASR

A local turn is the means by which a skill requests speech recognition services.  The word "local" here refers to a turn started by the skill, in contrast to turns started when a user says "HJ + phrase" that have a (global) reach beyond the skill. Since turns are long operations that involve waiting for user speech, they run asynchronously after they're requested. The skill will post a turn request to Jetstream, which is acknowledged without delay and which causes Jetstream to begin the process of connecting and sending audio to the Hub to perform speech recognition. As the turn progresses, Jetstream posts messages about its status or conclusion to /events.

Start Local Turn

Start a local turn, it remains active until it reports a status of SUCCEEDED, FAILED, INTERRUPTED, REJECTED, CANCELED, or TIMEDOUT via a TURN_RESULT message on the /events Websocket.

 URL
/listen/start_local_turn
Parameters

name

type

Description

nluRules

string[]

Names of rules that should be activated for this turn. If this list is empty, the text output of the ASR step is not parsed for meaning and is simply returned to the skill.

ignoreHJ

boolean

If true and HJ occurs during this turn, ignore it (rather than interrupt the turn). (default: false)

ignoreGlobalRulesbooleanIf true, global rules are not active during the turn, if false, the global rules (other than the launch rule) are active in addition to the provided nluRules. (default: false)
rejectIfBusybooleanIf true and there is already a turn in progress (global, local, enrollment or pronunciation learning) then reject this turn, otherwise interrupt the turn in progress and run this one instead. (default:false)
languagestringISO language label, e.g. "en-US" (default: "")
metastringArbitrary JSON data to pass along to the hub. (default: "")
earlyEOS string[]A list of words and phrases that will be used to detect a valid response from incremental ASR results (i.e. prior to EOS and grammar parsing).
hintPhrasesstring[]A list of hint phrases to add to the ASR vocabulary
clientNLUNLUResultThe semantic result desired from this turn. If present, no audio will be sent to the hub. See this entry in update_local_turn for further details.
clientASRstringThe ASR text result desired from this turn. If present, no audio will be sent to the hub. See this entry in update_local_turn for further details.
sosTimeoutfloatThe period of time to wait (in seconds) for the Start Of Speech after hearing HJ. If HJ is not heard within this period, the turn completes with a status of TIMEDOUT and message of "sos". If this property is set to -1 (or not provided) the value used is the one found in the jibo-jetstream-service.json file with the property name "local_sosTimeout_sec", which is currently 10 seconds. (default: -1)
maxSpeechTimeoutfloatThe maximum number of seconds that a user may speak after saying HJ. If the user speaks for more than this number of seconds, the turn completes with a status of TIMEDOUT and message of "maxSpeech". As with sosTimeout, a value of -1 causes the config file property "local_maxSpeechTimeout_sec" to be used, which is currently 60 seconds. (default: -1)
 Response 

name

type

Description

requestID

string

A unique ID for this turn, which will be included with any status information about it posted to /events and which can later be used to cancel it.

Update Local Turn

Update (that is, force the completion of) an in-progress local turn with the given NLU or ASR text information. This function is provided to allow a menu button push to simulate NLU input to the skill. When invoked, the audio being streamed to the Hub is stopped and the Hub accepts the provided ASR or NLU data as input.

There is a potential race condition where the given ASR/NLU data is sent to the Hub but the Hub (which is also waiting for results from the Cloud ASR and Cloud Parser) receives the Cloud ASR or NLU result first, which causes the update command to be ignored.

 URL
/listen/update_local_turn
Parameters

name

type

Description

requestID

string

The requestID of the in-progress turn to be updated. If the turn for the given requestID is no longer active, this call is ignored.

metastringArbitrary JSON data to pass along to the hub.
clientNLUNLUResult

The semantic ("Natural Language Understanding") result desired from this turn. This will be the same JSON schema that arrives as the data.result.nlu field in a successful TURN_RESULT message, e.g.

"nlu" : {
"entities" : {},
"intent" : "generalWhatQuestions",
"rules" : [
"launch"
]
}
NLUResult
nametypedescription
rulesstring[]listen rules to activate
intentstringintent
entitiesobjecta map of EntityNames (strings) to EntityValues (which are either string or string[])
clientASRstringThe ASR text to be used to produce the NLU result from this turn. This is a simple string of words, equivalent to what the ASR returns. Only one of the clientASR and clientNLU properties should be provided, if both are provided only the clientNLU property will be used.
 Response: NONE (empty JSON)

Mimic Global Turn

Similar to Update Local Turn, the skill provides ASR text or NLU values with which to simulate a global turn (i.e. as if the user had said "HJ" followed by the given ASR text or an utterance that resulted in the given NLU values). This function is provided to allow cloud skills to be launched from the robot.

 URL
/listen/mimic_global_turn
Parameters

name

type

Description

languagestringISO language label, e.g. "en-US"
suppressedEventsstring[]A list of events to suppress during this turn, e.g. ["HJ_HEARD", "TURN_STARTED"]. All events that can be emitted during a global turn can be suppressed. And note that only those events associated with this global turn can be suppressed. If, for example, someone says HJ during a mimic_global_turn, that HJ_HEARD event will not be suppressed, even if HJ_HEARD is among the events to be suppressed during this turn.
clientNLUNLUResult

The semantic result desired from this turn. This will be the same JSON schema that arrives as the data.result.nlu field in a successful TURN_RESULT message, e.g.

"nlu" : {
"entities" : {},
"intent" : "generalWhatQuestions",
"rules" : [
"launch"
]
}
NLUResult
nametypedescription
rulesstring[]listen rules to activate
intentstringintent
entitiesobjecta map of EntityNames (strings) to EntityValues (which are either string or string[])
clientASRstringThe ASR text to be used to produce the NLU result from this turn. This is a simple string of words, equivalent to what the ASR returns. It should not include the "Hey Jibo" text. Only one of the clientASR and clientNLU properties should be provided, if both are provided only the clientNLU property will be used.
Response 

name

type

Description

requestID

string

A unique ID for this turn, which will be included with any status information about it posted to /events and which can later be used to cancel it.

Cancelling Turns

Cancel Local Turn and Cancel Any Turn allow turns currently in progress to be cancelled. When cancelled, a status message will appear on /events indicating the turn was cancelled. Enrollment and Pronunciation Learning turns are also cancelled this way. If there was no turn in progress (or if it completed before the cancel was executed) then the cancel request is ignored and no status is given. 

Cancel Local Turn

Cancel the turn matching the given requestID.

URL

 /listen/cancel_local_turn

Parameters

name

type

Description

 

requestID

string

The requestID of the turn to cancel

Response

NONE (empty JSON)

Cancel Any Turn

Cancel any turn that is in progress, including a global turn (one started by the user uttering "HJ").

URL

 /listen/cancel_any_turn

Parameters

NONE (empty JSON)

Response

NONE (empty JSON)

Global Subscriptions: Handling "HJ + phrase"

Grammars for handling user speech of the form "HJ+phrase" are installed and removed through Subscribe and Unsubscribe requests. Normally the set of grammars used for any particular "HJ+phrase" is the union of the grammars of all the active subscriptions. However, the "exclusive" parameter, when set, will cause only those subscriptions so marked to be active (i.e. the subscriptions not marked exclusive will be hidden by the ones marked exclusive).

Subscribe Global

Create a subscription that contributes the given grammars to the set of all active global grammars.

URL

 /listen/subscribe_global

Parameters

name

type

Description

 exclusivebooleanWhen true, only the subscriptions marked exclusive will be active.
 

nluRules

string[]

A list of grammars to be added to the set of grammars with which to recognize HJ+phrase requests

 languagestringan ISO language tag, e.g. "en-US"

Response

name

type

Description

 requestID

string

A unique ID for this subscription, which can be used to later unsubscribe it.

Unsubscribe Global

Remove a particular subscription, given by its ID, from the set of active subscriptions.

URL

 /listen/unsubscribe_global

Parameters

name

type

Description

 requestID

string

A ID of the subscription to be removed.

Response

NONE (empty JSON)

Unsubscribe All Globals

Removes all subscriptions.

URL

 /listen/unsubscribe_all_globals

Parameters

NONE (empty JSON)

Response

NONE (empty JSON)

Speaker Voice Enrollment

Speaker voice enrollment consists of creating models of each speaker's voice by asking them to say HJ some number of times. In order for the skill to control this process there are commands for removing existing models, collecting HJ samples (aka "utterances"), and creating models from the previously collected samples.

The usual workflow for a skill using the enrollment API is to start an enrollment turn for a particular speaker that collects their utterances. The skill can request any number of utterances, but it would typically be six (or just a single one if recreating the Jibo V1 UX).

Once the turn begins (indicated by a TURN_STARTED event) the speaker says each HJ separated by at least a second. After each HJ an event is emitted reporting the utterance quality and the utterance number (out of the total requested) that this represents.

When the requested number of acceptable HJs have been collected, a TURN_RESULT event is emitted (status=SUCCEEDED) and the enrollment turn is finished.

Even if an enrollment turn is cancelled or interrupted, the acceptable utterances collected so far for each speaker remain as "pending" utterances in the system. The /enroll/get_utterance_count method may be used to find out how many utterances a speaker has, both those for use in creating a new model (pending utterances) and of those that were used to create the existing model (model utterances).

Finally, the skill requests that a new model be created for a given speaker from all the utterances that have been collected for them and (optionally) the utterances used to create the existing model. This returns a status of either SUCCEEDED or FAILED.

Start Enrollment Turn

This is the speech sample collection step for voice enrollment. It is designed so that the user can say several HJs in succession. Every time an HJ is said, a message is posted to /events giving the status of the utterance (i.e. whether it was acceptable or not). After the requested number of (acceptable) HJs is given, the turn will complete with a result of SUCCEEDED. Acceptable utterances collected during an enrollment turn are collected into a set of pending utterances that exist until a model is created from them.

In the case of a catastrophic failure of the enrollment recognizer the TURN_RESULT message will have a status of FAILED and the data.message field will contain the reason for the failure.

URL

 /listen/start_enrollment_turn

Parameters

name

type

Description

 

numberOfUtterances

number

The number of (good) HJs the user must say before the turn reports SUCCEEDED

 

speakerID

string

An arbitrary string that the skill provides to denote a particular speaker. This string will be used to identify the utterances collected here when the speaker model is created.

 rejectIfBusybooleanIf true and there is already a turn in progress (global, local, enrollment or pronunciation learning) then reject this turn, otherwise interrupt the turn in progress and run this one instead.

Response

name

type

Description

 requestID

string

A unique ID for this turn, which will be included with any status information about it posted to /events and which can later be used to cancel it (via cancel_local_turn)

Create Speaker Model

This creates a speaker mode from a) the pending samples collected during the enrollment turn(s) for a particular speaker and –if append is true– b) the model samples used in the creation of the previous model.

The SpeakerID provided can refer to any speaker from whom a sufficient number of samples is available (i.e. the sum of those pending and –if append is true– those already in the model). Currently at least 4 samples a required from any particular speaker.

After the model is created, the pending samples used to create the model are moved into the so-called model category to join (append=true) or replace (append=false) the other model utterances there, if any. In this way the model utterances always represent the set of utterances used to build the most recently created model. By setting append to true in subsequent model creation operations, the samples collected then will be used together with (i.e. appended to) all the ones used to make the current model.

URL

 /enroll/create_speaker_model

Parameters

name

type

Description

 

speakerID

string

The ID of the speaker whose model is being created (the same value used for the speaker's enrollment turns).

 appendboolWhen true, append the pending utterances to the model utterances and use both sets to create the model. When false, only the pending utterances are used to create the model. Default: false

Response/Code

name

type

Description

HTTP 200Empty JSON  
HTTP 400message

string

Error message (e.g. "Insufficient Utterances")

Remove Speaker Model

This removes the speaker model and all the model utterances for a given speaker. The speaker is effectively removed from the Speaker ID system. The pending utterances for a given speaker are not affected (they can be removed with /enroll/remove_pending_samples)

URL

 /enroll/remove_speaker_model

Parameters

name

type

Description

 

speakerID

string

The speaker ID for the model to be removed.

Response/Code

name

type

Description

HTTP 200Empty JSON  
HTTP 400message

string

Error message (e.g. "No Such Speaker")

Remove Pending Samples

This removes the pending utterances collected for a given speaker (i.e those not yet made into a model). The speaker model and the model utterances are not affected (they can be removed with /enroll/remove_speaker_model)

URL

 /enroll/remove_pending_samples

Parameters

name

type

Description

 

speakerID

string

The speaker ID for the pending samples to be removed.

Response/Code

name

type

Description

HTTP 200Empty JSON  
HTTP 400message

string

Error message (e.g. "No Such Speaker")

Get Utterance Count

This returns the number of good utterances collected so far for a given speaker (but not yet built into a model, the so-called pending_utterances) and the number of utterances used in the existing model for the speaker (the so-called model_utterances).

URL

 /enroll/get_utterance_count

Parameters

name

type

Description

 

speakerID

string

The ID of the speaker for whom the count of utterances is requested.

Response

name

type

Description

 pending_utterances

number

The number of utterances that have been collected so far for the given speaker but not yet built into a model.

 model_utterancesnumberThe number of utterances that were used to build the current model.

Get Enrolled Speakers

This returns the speaker IDs for all the speakers for which models have been created.

URL

 /enroll/get_enrolled_speakers

Parameters

NONE (empty JSON)

Response

name

type

Description

 speakersstring[]A list of the speaker IDs of the enrolled speakers.

Pronunciation Learning

Also called "name learning", Jetstream provides methods for finding the user's pronunciation of a name. The workflow for skills consists of just two steps: initializing the system with the name to be learned and then asking the system to listen to the user say the name and return an estimate of the way it was pronounced.

 

Initialize Pronunciation Learning

This prepares the system for listening to the way a user pronounces a particular word. It builds data structures that will be used during the listening step. For normal length names this completes in under 50ms, but longer names can take several hundred ms.

URL

 /pronunciation/init_pronunciation_learning

Parameters

name

type

Description

 word_to_learnstringThe word that the system will try to learn the pronunciation of.

Response

name

type

Description

 requestID

string

A unique ID that is created every time init_pronunciation_learning is called that is included in messages and audio files logged during subsequent pronunciation learning turns. Its sole purpose is to enable post-hoc speech science experiments by allowing the initialization of the pronunciation learning system and the audio data logged in subsequent turns to be tied together.

Start Pronunciation Learning Turn

This is the pronunciation estimation step where the user speaks the name to be learned. It first processes the incoming  audio with a speech endpointer to determine when the user is speaking. Then, constrained by a phonetic graph built from the spelling of the word, it asks a recognizer to return the best path through that graph given what was said. The result is a (probabilistic) phonetic spelling of what it heard the user say.

URL

 /listen/start_pronunciation_learning_turn

Parameters

name

type

Description

 

word_to_learn

string

This must be identical to the word provided in the init_pronunciation_learning step. If not, an error is returned.

 

ignoreHJ

boolean

If true, any utterances of HJ will be ignored during this turn. If false, HJ will have its normal effect (usually interrupting the turn in progress and starting a global turn). (default: false)

 rejectIfBusybooleanIf true and there is already a turn in progress (global, local, enrollment or pronunciation learning) then reject this turn, otherwise interrupt the turn in progress and run this one instead. (default: false)

Response

name

type

Description

 requestID

string

A unique ID for this turn, which will be included with any status information about it posted to /events and which can later be used to cancel it (via cancel_local_turn)

Altering how HJ is handled

Normally when a user says HJ, Jetstream will interrupt whatever is in progress and begin a  "Global Turn", sending the audio following the HJ to the Hub for speech-to-text and parsing, and then returning a possible skill switch directive from the Hub if what has been said matches one of the active global grammars.

However, Jetstream can be set to handle HJ in other ways by using Set HJ Mode. When this is done the new setting stays in effect until the robot is rebooted or the setting is changed again.

Set HJ Mode

This sets the HJ handling mode. There are 3 ways of handling HJ in Jetstream:

  1. "NORMAL_HJ", as described above, handles HJ by starting a global turn.
  2. "IGNORE_HJ" causes Jetstream to ignore any utterances of HJ; no events are emitted and there are no changes to Jetstream's state, it is as if the user has not said HJ at all.
  3. "ONLY_HJ" has the effect of letting Jetstream recognize HJ and emit an event indicating such, but it does not start a global turn and instead simply returns to the base state of waiting for the next HJ. Note that if a turn (global, local, etc) is in progress, an HJ in this mode will still have the effect of interrupting that turn just as it would in NORMAL_HJ mode.

URL

 /listen/set_hj_mode

Parameters

name

type

Description

 modestring

One of three possible values:

  1. NORMAL_HJ
  2. ONLY_HJ
  3. IGNORE_HJ
Response

None (empty json)

Get HJ Mode

This is used to discover Jetstream's current HJ handling mode. Note that because of the way Jetstream works it is possible to set the mode and then get the mode within a short enough interval (<10 milliseconds) that the change has not had time to take effect and in this case the old mode will be reported.

URL

 /listen/get_hj_mode

Parameters

None (empty json)

Response

name

type

Description

 modestringThe current setting of Jetstream's HJ handling mode.

Proactive Triggering

Proactive Triggering is the way that Jibo "wakes up" the Hub to find out whether there is some interaction it can offer the user. Since the Hub cannot contact Jibo, it is up to Jibo to contact the Hub.

Trigger

Trigger does not take any JSON parameters itself, rather the entire body of the HTTP request is sent, verbatim, to the Hub. Internally Trigger does request the Jibo Context from Be and sends that to the Hub right after the information provided in the Trigger request.

URL

 /proactive/trigger

Parameters

None – the contents of the HTTP request's body is passed directly to the Hub

Response

name

type

Description

 requestID

string

A unique ID for this trigger, which will be included with Trigger response messages posted to /events.

Test and Debug Commands

To enable test and debug efforts, Jetstream offers a few commands for recording audio from Jibo's "ASRin" audio source or inserting audio from an external file so that Jetstream uses it in lieu of microphone input.

Start Recording

This makes a recording from Jibo's "ASRin" audio device, which is actually the output of the Jibo AudioService (the Audio Service provides a single, noise-cancelled, virtual audio source derived from Jibo’s six individual microphones). The audio's sampling rate is 16kHz with 16 bit, little-endian samples. While recording, the audio is stored in a file. When the Retrieve Recording command is issued, the recording process is stopped and the recorded audio is returned.

URL

 /debug/start_recording

Parameters

name

type

Description

 start_immediatelyboolean

When true, recording will begin as soon as the command is issued, when false, recording will begin when HJ is recognized.

 max_recording_duration_msnumberSets the maximum length of time (in ms) that the recording will proceed. Default is 2000 ms.

Retrieve Recording

This stops the recording (if in progress) and returns the audio and cue markers from the recording. 

URL

 /debug/retrieve_recording

Parameters

None (empty json)

Responsenametypedescription
 recordingRetrievedRecording

A JSON object containing the base64 encoded audio of the recording and cue markers, as follows:

Retrieved Recording
nametypedescription
   
base64_audiostringbinary audio data in base64 format.
start_timenumberalways 0
end_timenumberduration of the recording in ms
cue_pointsCuePoint[]an array of CuePoints, described below.
CuePoint
nametypedescription
   
namestringthe name of the point, one of HJ_BEG, HJ_END, EP_BEG, or EP_END
timenumberthe time point (number of milliseconds into the recording) where the cue point occurs.

Note that the Jetstream repo includes a "record-from-robot.py" utilitiy for making robot recordings from the Mac that places the recording's cue points into the wave file it creates. These cue points will be displayed as labeled markers in Mac audio editors like "TwistedWave":

Mimic Mic Input

For testing purposes this command allows you to temporarily replace Jibo's normal microphone audio input with audio data you supply. The supplied data is fed to the robot at the same rate as normal audio input, so (in theory) this should be indistinguishable from normal audio input. Problems arise however when using TTS synthesized audio since the background noise from the microphone is quite different from the background noise of TTS (which is essentially zero noise) and the switching between the two noise levels when the external audio is introduced and removed causes recognition problems. In practice we have found that noise must be mixed with TTS audio for the best recognition results. Our noise source was simply a recording made from Jibo in a quiet room.

Use of this command while audio from a previous command is still being used simply results in the new audio being queued for use after the existing audio finishes. In addition to the audio, it is possible to specify pre- and post- insertion delay times that will cause a delay before the next audio in the queue is used (microphone input is used during the delay period). This can be useful for experimenting with the size of the gap in e.g. "HJ <gap> <phrase>" or other speech strings, without having to make new recordings.

URL

 /debug/mimic_mic_input

Parameters

name

type

Description

 audiostring

the base64 encoded audio data at 16kHz and 16 bits per sample.

 start_delay_msnumberthe number of ms to wait before using the supplied audio
 finish_delay_msnumberthe number of ms to wait after using the supplied audio before using the next audio in the queue.

Stop Mimicking Input

This command will stop any currently active mimicked input. It returns the sample number of the last sample given to the robot's audio system. This allows you to find the spot where playing left off in the file that was presented Note that any queued "mimicked input" is not affected and after this command runs, the next item in the queue (if any) will be feed to the audio system.

URL

 /debug/stop_mimicked_input

Parameters

None (empty json)

ResponsenametypeDescription
 stopping_pointnumberthe sample number at which audio input to the robot stopped (the first sample in the file that was not sent to the robot – accurate to ~50ms)

The Jetstream Websocket API

Jetstream reports the status and conclusion of most of its commands via Websocket messages through the URL /events. The Jetstream Service Debug page (http://172.24.84.101:8090/index.html) displays the messages being sent to /events as well as messages from several other debug-related URLs.

Jetstream does not accept any input on its websocket ports and will ignore what is sent to them.

WSmsg: the base class

All Jetstream WS messages have these fields in common.

Name

(base class)

Parameters

name

type

Description

 typestring

the name of the message e.g. "TURN_RESULT"

 requestIDstringif this is in response to a command, this will be the requestID Jetstream returned when the command was issued.
 transIDstringif this is related to a Hub transaction, this is the transaction ID Jetstream used with the Hub during that transaction.
 tsnumberthe time in milliseconds since the Unix epoch
 dataobjectJetstream messages that need to provide information beyond the base class properties populate a "data" object with the information. The data object schema is message dependent.


Turn-related Messages

During the processing of a turn, these messages can appear.

Turn Started

This message is sent as a status update for all turns (local, global, enrollment, and pronunciation learning). For local and global turns this indicates that a connection to the Hub has been successfully established and that audio is being sent. For enrollment and pronunciation learning turns, this indicates that the underlying recognizer has been engaged and is processing user audio.

Name

TURN_STARTED

Parameters

NONE

Start of Speech

Upon receiving a Hub notification that its speech recognizer has reported Start of Speech, this message is sent.

Name

SOS

Parameters

NONE

End of Speech

Upon receiving a Hub notification that its speech recognizer has reported End of Speech, this message is sent. In response to that Hub notification, Jetstream stops sending audio to it.

Name

EOS

Parameters

NONE

Turn Result

This message is sent at the conclusion of a turn and the status field contains the reason it concluded. In the case where the status is SUCCEEDED, the recognition result from the turn is also provided, in the case where the status is FAILED, the error message giving the failure reason is provided. In the case of TIMEDOUT the message field will be either "sos" or "maxSpeech". In all other status cases no further information is provided. All turns are guaranteed to conclude with a Turn Result message of some sort.

Name

TURN_RESULT

Parameters

name

type

Description

 data.statusstring

The reason the turn concluded, one of:

  • SUCCEEDED
  • FAILED
  • INTERRUPTED (by another turn request or HJ+phrase)
  • CANCELED (by cancel_local_turn)
  • REJECTED (when a turn is started with rejectIfBusy set to true and another turn is already in progress)
  • TIMEDOUT (when user speech does not occur within the period specified by sosTimeout or when the duration of user speech exceeds the maxSpeechTimeout setting)
 data.messagestring(If present) In the case of status==FAILED or TIMEDOUT this contains the reason for the failure or timeout.
 data.messagestring(If present) In the case of status==SUCCEEDED and a Pronunciation Learning turn, this contains the estimated pronunciation of what the user said.
 data.resultobject(If present) In the case of status==SUCCEEDED (and not a Pronunciation Learning turn) this contains the "result" object from the Hub.

Hub-related Messages

Hub Error

Hub Error messages cover a lot of ground: Jetstream itself can produce them in response to Proactivity Trigger requests if it fails to open a Hub connection or if an already open Hub connection goes down. Or the Hub can ask them to be produced as a response to a previous request (e.g. LISTEN or TRIGGER).

In the case of Jetstream-sourced messages only the "data.message" parameter is present, which gives the reason for the failure. In the case of a Hub-promulgated message, the data object is a verbatim copy of the JSON field the Hub supplied.

 

Name

HUB_ERROR

Parameters

name

type

Description

 data.messagestring(If present) The problem Jetstream encountered trying to communicate with the Hub.
 dataobject(If present) The Hub's error information it supplied in response to a LISTEN or TRIGGER request.

SKILL_*

There are a class of messages the Hub produces that start with the string "SKILL_". These are directly transcribed into Jetstream messages containing a verbatim copy of the JSON from the original Hub message.

 

Name

SKILL_*

Parameters

name

type

Description

 dataobjectThe JSON the Hub supplied.


Onboard Recognizer-related Messages

These messages correspond to events that occur in the onboard recognizers.

HJ Heard

HJ Heard is emitted as soon as the onboard recognizer is confident it has heard someone say HJ, this may actually happen before the "b" in Jibo.

Name

HJ_HEARD
ParametersNONE

HJ Only

HJ Only is emitted when the Hub reports that no speech after the HJ was detected or recognized. The delay between the time the HJ was said and this event is emitted is determined by the HubAsr.global_sosTimeout_sec setting in the config file.

Name

                HJ_ONLY
+              
ParametersNONE

Speaker ID

Speaker ID is emitted only if there are enrolled speakers.

Name

SPEAKER_ID
ParametersnametypeDescription
 data.speakersSpeakerRecogResult[]

An array of SpeakerRecogResult objects (sorted in descending score order) with one entry for each enrolled speaker that states how well that speaker was recognized.

SpeakerRecogResult
nametypedescription
speakerstringThe ID string used to enroll this speaker.
scorenumberauthentication score (not useful without knowing the threshold)
acceptedbooleanIf true, this speaker's score was high enough to be considered "recognized"
high_confidencebooleanIf true, this speaker's score was either high enough that the system is confident in accepting it, or low enough that it is confident in rejecting it.
 data.snrnumberThe estimated signal-to-noise ratio of the HJ input used in the speaker recognition operation.

 

Speaker Enrollment

A Speaker Enrollment message is emitted after every HJ recognition during an enrollment turn.

Name

SPEAKER_ENROLLMENT
ParametersnametypeDescription
 data.speakerstringThe ID of the speaker being enrolled.
 data.snrnumberThe estimated SNR of the HJ utterance.
 data.acceptedbooleanTrue if the utterance quality was acceptable. If this is false, the utterance being reported on was rejected.
 data.problemsstring[]If data.accepted is false, this is a string vector containing the problem(s) with the utterance. The possible values are: CLIPPING, POOR_SNR, NOT_SPEECH_LIKE, NOT_CONSISTENT, BAD_DURATION, BAND_LIMITED, POOR_QUALITY.
 data.good_utterance_countnumberThe number of utterances accepted so far during this turn.
 data.total_utterance_countnumberThe total number of utterances seen so far during this turn.
 data.finalbooleanTrue if the number of acceptable utterances matches the numberOfUtterances parameter specified when the enrollment turn was started. After this the turn will complete and no further Speaker Enrollment messages will appear.

Voice Activity Detector events

Jetstream has a built-in voice activity detector that emits websocket messages at 20hz to the endpoint /vad. These messages indicate the degree to which the sound that Jibo's microphones are picking up resembles human speech.   

NameVAD_EVENT_DATA
ParameterTypeDescription
audio_timeuint64_t

The system time corresponding to the beginning of the results

avg_frame_dbfloatThe average power of the 50ms frame of audio that was used to produce the VAD results.
VADeventsVADevent[]

An array of VADevent elements. Each corresponds to a 20ms span of audio. Since the VAD uses a 20ms frame internally and Jetstream uses a 50ms frame (that is, always giving the VAD 50ms of audio at a time), the length of the VADevents array will alternate between being two and three elements long.

VADevent
nametypedescription
 timeuint64_t The system time corresponding to the audio that produced this result. 
vadfloat

This is the probability that there is voice in each 20ms of audio. These probabilities are float values from approx. -1.0 to approx. +1.0, where 0.0 can be seen as the recommended threshold for the no-voice (<0) or voice (>0) decision. To lower sensitivity, increase the threshold (and vice versa). Sensible ranges for a threshold are between -0.3 and + 0.4. The closer the values are to -1.0 and +1.0, the more certain the decision as to whether the audio is voice or not-voice.


Jetstream's Debugging and Testing Facilities

The /debug/* Websocket ports

As described in the prior section, Jetstream provides information to skills via the /events websocket. To assist debugging and testing Jetstream also produces WS events on 3 other ports, The output from these ports is visible on the Jetstream debug page. We describe them below.

The Listener Loop monitor: /debug/listenloop

This port shows all the events being sent to the Listener Loop (Jetstream's central process).

Looking on the Jetstream debug page while it is running, we see output like this in the listen_loop window:  

  1. {"state":"hjw","ts":1519834943931,"type":"JM_RECOG_HJ_EVENT","data":{"name":"RecogHJEventData","timestamp":1519834943778,"begin_time":945765,"end_time":946435,"max_frame_power":2.431922674179077,"utterances":["hey jibo"],"scores":[110.0],"message":" utterance: hey jibo score: 110 walign: ADE00D70 palign: ADE00C60 {\"word_alignment\":\"945765 945960 hey 0.00 945960 946185 jibo 0.00 \"}"}}
  2. {"state":"phw","ts":1519834943943,"type":"JM_HUB_CLIENT_CONNECT_RESULT","transaction_id":"tid:8f021c76-1ca3-11e8-9f1f-8cae4cf576b1","success":true,"message":""}
  3. {"state":"phw","ts":1519834944148,"type":"JM_RECOG_SPEAKER_EVENT","data":{"speakers":[{"speaker":"5a285d26316a8a00193a0e7c","score":5.6092047691345219,"accepted":true,"high_confidence":true}],"snr":18.92803955078125}}
  4. {"state":"phw","ts":1519834945141,"type":"JM_HUB_SOS","transaction_id":"tid:8f021c76-1ca3-11e8-9f1f-8cae4cf576b1"}
  5. {"state":"phw","ts":1519834946618,"type":"JM_HUB_EOS","transaction_id":"tid:8f021c76-1ca3-11e8-9f1f-8cae4cf576b1"}
  6. {"state":"phw","ts":1519834947001,"type":"JM_HUB_LISTEN","transaction_id":"tid:8f021c76-1ca3-11e8-9f1f-8cae4cf576b1","final":false,"data":"{ \"asr\" : { \"confidence\" : 0.9876290559768677, \"text\" : \"do you like penguins\" }, \"match\" : { \"onRobot\" : false, \"skillID\" : \"chitchat-skill\" }, \"nlu\" : { \"entities\" : { \"Activity\" : \"\", \"GeneralLikes\" : \"Penguin\", \"Occupation\" : \"\", \"Other\" : \"\", \"OtherPerson\" : \"\", \"given-name\" : \"\", \"last-name\" : \"\", \"number\" : \"\" }, \"intent\" : \"doesJiboLikeThing\", \"rules\" : [ \"launch\", \"globals/global_commands_launch\" ] } }"}
  7. {"state":"phw","ts":1519834947112,"type":"SKILL_ACTION","transaction_id":"tid:8f021c76-1ca3-11e8-9f1f-8cae4cf576b1","type":"SKILL_ACTION","final":true,"data":"{ \"action\" : { \"config\" : { \"es_auto_tagging\" : true, \"mim_type\" : \"announcement\", \"prompts\" : [ { \"prompt\" : \"Yes I love penguins, because we're so alike. We have the same coloring, and neither of us can fly.\", \"prompt_id\" : \"RI_JBO_LikesPenguins_AN_04\" } ] }, \"type\" : \"SLIM\", \"version\" : \"1.0.0\" }, \"final\" : false, \"fireAndForget\" : false, \"skill\" : { \"id\" : \"chitchat-skill\", \"session\" : { \"data\" : { \"_mim\" : { \"noInput\" : 0, \"noInputMax\" : false, \"noMatch\" : 0, \"noMatchMax\" : false } }, \"id\" : \"be2ab9c3-1c94-4553-9364-59961c0b70df\", \"nodeID\" : 0, \"trace\" : [ { \"nodeID\" : 1, \"transition\" : \"Reactive\" }, { \"nodeID\" : 2, \"transition\" : \"ScriptedResponse\" }, { \"nodeID\" : 0, \"transition\" : null } ] } } }"}

Each line is the JSON representation of a message that the Listener Loop has received. The state the Listener Loop was in when the message was received is placed in the "state" property (hjw: HJ Wait, phw: Phrase Wait, plw: Pronunciation Learning Wait, enw: Enrollment Wait).

In the list above we can see how an utterance of "Hey Jibo, do you like penguins?" has become 7 events submitted to the Listener Loop:

  1. The HJ recognizer seeing "HJ"
  2. The Hub reporting that it is connected
  3. The Speaker ID recognizer reporting a recognition event
  4. The hub reporting SOS
  5. The hub reporting EOS
  6. The hub reporting LISTEN results from the cloud ASR, and finally
  7. A hub skill switch event based on a parse of what was said.

Monitoring the timestamps here can show how long these events are taking to arrive.

The Hub monitors: /debug/hub_outgoing and /debug/hub_incoming

These two ports log all the messages Jetstream is sending to the Hub and (respectively) that the Hub is sending to Jetstream. This is what they produced during the same interaction above:

hub_outgoing (from Jetstream to the Hub)

  • {"type":"LISTEN","ts":1514742224646,"msgID":"mid:25c4afe6-ee52-11e7-aad4-8ace4cffad67","transID":"tid:25bf5e7e-ee52-11e7-be44-8ace4cffad67","data":{"lang":"en-US","hotphrase":true,"rules":["launch"]}}
  • {"type":"CONTEXT","ts":1514742224647,"msgID":"mid:25c4db56-ee52-11e7-8c29-8ace4cffad67","transID":"tid:25bf5e7e-ee52-11e7-be44-8ace4cffad67","data":{"general":null,"runtime":null}}

The LISTEN message indicates to the Hub that recognition is requested. It is followed by a CONTEXT message holding information about the state of the robot obtained from the Be "Context" service. In this case the service was not running, so the runtime field is "null".

After the LISTEN and CONTEXT messages, the audio will begin being sent. The audio messages are of type binary (which is how the hub distinguishes them from non-audio messages) and are not sent to the hub_outgoing port.

hub_incoming (from the Hub to Jetstream)

  • {"type":"SOS","data":null,"msgID":"c78a434e-fd2c-4c9b-bb1c-8b47d3fc3110","transID":"tid:25bf5e7e-ee52-11e7-be44-8ace4cffad67","ts":1514742225689,"timings":{"total":1061}}
  • {"type":"EOS","data":null,"msgID":"50454cc9-9285-4530-b7df-f2ec1bf141d8","transID":"tid:25bf5e7e-ee52-11e7-be44-8ace4cffad67","ts":1514742226861,"timings":{"total":2233}}
  • {"type":"LISTEN","msgID":"296a7c5a-5e97-4f31-8e4d-d3faec360410","transID":"tid:25bf5e7e-ee52-11e7-be44-8ace4cffad67","ts":1514742227286,"data":{"asr":{"text":"do you like penguins","confidence":0.9797691106796265},"nlu":{"rules":["launch"],"intent":"doesJiboLikeThing","entities":{"FoodGeneral":"","Mammal":"","Amphibian":"","Bird":"Penguin","Breakfast":"","Bug":"","Cheese":"","Color":"","Dinosaur":"","FantasyCreature":"","Fish":"","Flower":"","Fruit":"","MusicType":"","MusicalInstrument":"","Pet":"","SchoolSubject":"","Season":"","Shape":"","Sport":""}},"match":{"skillID":"chitchat-skill"}},"final":false,"timings":{"total":2658,"asr":2364,"nlu":291}}
  • {"type":"SKILL_ACTION","data":{"skill":{"id":"Chitchat","session":{"id":"110bd7fd-4419-49a5-b00c-3aeab05325aa","nodeID":0,"data":{"_mim":{"noMatch":0,"noInput":0,"noMatchMax":false,"noInputMax":false}},"trace":[{"nodeID":1,"transition":"Reactive"},{"nodeID":2,"transition":"ScriptedResponse"},{"nodeID":0,"transition":null}]}},"action":{"version":"1.0.0","type":"SLIM","config":{"prompts":[{"prompt_id":"RI_JBO_LikesPenguins_AN_03","prompt":"I like lots of animals, but the penguin is the best of the best. <break size='.3'/> Great color scheme."}],"mim_type":"announcement"}},"final":false,"fireAndForget":false},"ts":1514742227296,"transID":"tid:25bf5e7e-ee52-11e7-be44-8ace4cffad67","msgID":"a2abdd8e-0b6f-4d06-bff7-22b4b7b5d42c","timings":{"total":2670,"skill":10},"final":true}

The timestamps in the messages appearing in hub_incoming are generated on the Hub, so a way to get a sense of the time skew between the two systems is to look at e.g. the difference between the timestamp on the SOS message from he Hub and the one on the (related) SOS message being posted to the Listener Loop. In this case they report being 20ms apart (1514742225709 (Jetstream message) - 1514742225689 (Hub msg) = 20).

Jetstream Flow Diagram

Jetstream was originally developed from the following diagram showing how Local and Global turns are handled. Further functions and turn types have since been added to Jetstream (i.e. Enrollment and Pronunciation Learning), but the basic structure still holds and serves as a useful sketch of its operation.

Source: link


Summary

And this concludes our tour of the Jetstream system.

Comments and corrections are welcome.




+
+
+
+ + + + +
+ + + + + + + + +
+
+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + +
Write a comment…
+ +
+ +
+

+ Add Comment +

+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ +
+
+ + + + + + + + diff --git a/Troposphere Docs/JiboOrgnl/jibo-jetstream-service.json b/Troposphere Docs/JiboOrgnl/jibo-jetstream-service.json new file mode 100644 index 0000000..69a0837 --- /dev/null +++ b/Troposphere Docs/JiboOrgnl/jibo-jetstream-service.json @@ -0,0 +1,158 @@ +{ + "webCore": { + "serverPort": 8090, + "fileRoot": "/usr/local/var/www/jetstream", + "requestLogging": false + }, + "JetstreamService": { + "stacktracing": false, + "registryPort": 8181, + "serverPort": 8090 + }, + "JetService": { + "log_directory": "/var/log/jetstream" + }, + "HubClient": { + "proactive_url": "/v1/proactive", + "listen_url": "/v1/listen", + "listen_language": "en-US", + "xxx_override": { + "hub_port": 9000, + "hub_hostname": "172.24.84.137", + "entrypoint_hostname": "dev-entrypoint.jibo.com" + }, + "region-settings": { + "comment": "This is a switch, selected by the 'region' field setting in the robot's /var/jibo/credentials.json file", + "dev-entrypoint": { + "hub_port": 24605, + "hub_hostname": "dev-hub.jibo.com", + "entrypoint_hostname": "dev-entrypoint.jibo.com" + }, + "alpha-entrypoint": { + "hub_port": 24605, + "hub_hostname": "alpha-hub.jibo.com", + "entrypoint_hostname": "alpha-entrypoint.jibo.com" + }, + "stg-entrypoint": { + "hub_port": 24605, + "hub_hostname": "stg-hub.jibo.com", + "entrypoint_hostname": "stg-entrypoint.jibo.com" + }, + "preprod-entrypoint": { + "hub_port": 24605, + "hub_hostname": "preprod-hub.jibo.com", + "entrypoint_hostname": "preprod-entrypoint.jibo.com" + }, + "api": { + "hub_port": 24605, + "hub_hostname": "neo-hub.jibo.com", + "entrypoint_hostname": "api.jibo.com" + } + }, + "encoding_type_comment": "This can be either LINEAR16, FLAC, or OGG_OPUS", + "encoding_type": "OGG_OPUS", + "encoding-settings": { + "OGG_OPUS": { + "streaming_rate": 1.2, + "channels": 1, + "sample_rate": 16000, + "bitrate": 64000, + "vbr": true + }, + "FLAC": { + "streaming_rate": 3.0, + "channels": 1, + "sample_rate": 16000, + "bps": 16 + } + } + }, + "AudioChannel": { + "block_duration_ms": 50, + "period_size": 85, + "buffer_size": 2048 + }, + "HJLogger": { + "speech_analytics_log_path": "/var/log/jetstream/hj_logs", + "comment-logging-fraction": "The probability that an HJ utterance will be logged -- range 0-1", + "logging_probability": 0.05, + "start_margin_ms": 500, + "end_margin_ms": 500 + }, + "RecogHJ": { + "config_path": "/usr/local/share/asr/hey_jibo", + "comment": "Positive margin values widen the HJ Phrase spotter's standard endpoints. The end_margin_ms also compensates for the Phrase Spotter's premature endpoint, which is around the beginning O in jibO", + "hj_start_margin_ms": 0, + "hj_end_margin_ms": 100 + }, + "HubAsr": { + "global_sosTimeout_sec": 3, + "global_maxSpeechTimeout_sec": 20, + "local_sosTimeout_sec": 2, + "local_maxSpeechTimeout_sec": 20 + }, + "RecogSpeakerID": { + "ubm_path": "/usr/local/share/asr/sensory_data_td/", + "client_path": "/var/jibo/asr/sensory_data_td/", + "comment": "change next property to 'sensory_log_path' to enable Sensory authenticator logging, 'xxxsensory_log_path' to disable", + "xxxsensory_log_path": "/var/jibo/asr/sensory_auth_logs", + "threshold": -1.2, + "confidence_margin": 2, + "margin-comment": "positive values for start and end margins widen the space around the speaker-id HJ", + "id_start_margin_ms": 250, + "comment2":"id_end_margin is used when retrying to ID with an audio segment, it also controls the end margin of the logged utts", + "id_end_margin_ms": 300, + "PHRASEver": "OFF" + }, + "RecogSpeakerEnroll": { + "ubm_path": "/usr/local/share/asr/sensory_data_td/", + "client_path": "/var/jibo/asr/sensory_data_td/", + "comment": "change next property to 'sensory_log_path' to enable Sensory enroller logging, 'xxxsensory_log_path' to disable", + "xxxsensory_log_path": "/var/jibo/asr/sensory_enroller_logs", + "speech_analytics_log_path": "/var/log/jetstream/enroller_logs", + "minEnrollUtts": 6, + "checkQuality": "LOW", + "margin-comment": "positive values for the start margin increase the amount of silence fed to the enroller before the HJ occurs", + "enroll_start_margin_ms": 250 + }, + "RecogEOS": { + "resource_path": "/usr/local/share/asr/jibo_energy_eos" + }, + "RecogNameLearning": { + "resource_path": "/usr/local/share/asr/namelearning", + "temp_path": "/var/jibo/asr/namelearning_temp/", + "speech_analytics_log_path": "/var/log/jetstream/namelearning_logs", + "g2p_service": "http://localhost:8089/tts_nbest_prons" + }, + "logging": { + "jibo_message_prefix": "C", + "channels": { + "console": { + "class": "ConsoleChannel", + "pattern": "%Y-%m-%d %H:%M:%S %s: [%p] %t" + }, + "syslog": { + "class": "RFC_5424_Channel", + "name": "jibo-jetstream-service", + "facility": "SYSLOG_DAEMON" + }, + "splitter": { + "class": "SplitterChannel", + "channels": "syslog" + } + }, + "loggers": { + "root": { + "level": "debug" + }, + "l1": { + "name": "JetService", + "level": "debug" + }, + "l2": { + "name": "Application", + "level": "debug" + } + } + } +} diff --git a/Troposphere Docs/JiboOrgnl/prod.keys b/Troposphere Docs/JiboOrgnl/prod.keys new file mode 100644 index 0000000..44c531b --- /dev/null +++ b/Troposphere Docs/JiboOrgnl/prod.keys @@ -0,0 +1,221 @@ +aes_kek_generation_source = 4d870986c45d20722fba1053da92e8a9 +aes_key_generation_source = 89615ee05c31b6805fe58f3da24f7aa8 +bis_kek_source = 34c1a0c48258f8b4fa9e5e6adafc7e4f +bis_key_00 = 2b9c169a51bb9624d5279183dfee7ee926117f0795ac16112771c949d5921272 +bis_key_01 = 1bf82ba294ba08c19bbe5b0512092504db87f90a42d016af9388a6cc2d0bc7bf +bis_key_02 = 1d62c77ad89c774ee824f5d38d7b5ab9134693a608eefbf1b87a0694fd6d7fa0 +bis_key_03 = 1d62c77ad89c774ee824f5d38d7b5ab9134693a608eefbf1b87a0694fd6d7fa0 +bis_key_source_00 = f83f386e2cd2ca32a89ab9aa29bfc7487d92b03aa8bfdee1a74c3b6e35cb7106 +bis_key_source_01 = 41003049ddccc065647a7eb41eed9c5f44424edab49dfcd98777249adc9f7ca4 +bis_key_source_02 = 52c2e9eb09e3ee2932a10c1fb6a0926c4d12e14b2a474c1c09cb0359f015f4e4 +device_key_4x = 0a1528aa0fac02982cca19aadc6c0115 +eticket_rsa_kek = 19c8b441d318802bad63a5beda283a84 +eticket_rsa_kek_personalized = 5a9aa44db1b5c7b5ef018e707fab3513 +eticket_rsa_kek_source = dba451124ca0a9836814f5ed95e3125b +eticket_rsa_kekek_source = 466e57b74a447f02f321cde58f2f5535 +eticket_rsa_keypair = 1647efb920b5689d664c23bad4833312e5aeceb026c7296bfaf311e3854c2b0774a7ff205d3a963e5cda71d78a9a6606a77db558f67595d3597aef72283f0efa464ad922d8bb64d8a094f57b22ed01222b821676eb51cf84d51605043bb6fc74b3129ce185112db187b2abecf3632f28322593b7dd79625d51deb0bcc2ed86162499ba585444615809f908bb8c05b9f3cf033db5efb82d1fb5f31cced48bbe54382c9b66efb2b10955f4921176609fd750cc2bf6ed8a6594121dd8cfbb00ee5165609bbf210f7e0067034a6ffdd303238a6762caf6b62e48f29f59968d61c4036b911816910752ace24e71932eecbfa0cb78cf47454f58209d62374f2155e6d9ac51a0b0709430a9a0763e339b28e4549c6b324c6a5192bc09e154f7f085e69cb862b84acf9261c9d617c41f8d808856ee10f1660b31bbfec547bf244d9dbbc3fb145824cab77bae3bfc13187b80c1cd82179f9994d636f0f9423939b929ff43f55864a9f5cf6281952eef5f80e152b247596aed3ed071cad65ef036bb0244267c93087968281d411e92802bb2fae8c6eb8db361db389271c11e5fc054049c18c809e702c518d86ef231a3285b5cd159853b41416d48c6b0a3b4c18397f228d9f7c87c4c82afe4af735cfa838fa5c94bbb61886ee0f6a3103452ab7e833936ad00f2e0b7d9bff94742f74a4214d06432e57daa7ba3b8504f4661d737f1c3176d00010001000000000000000000000000 +header_kek_source = 1f12913a4acbf00d4cde3af6d523882a +header_key = aeaab1ca08adf9bef12991f369e3c567d6881e4e4a6a47a51f6e4877062d542d +header_key_source = 5a3ed84fdec0d82631f7e25d197bf5d01c9b7bfaf628183d71f64d73f150b9d2 +key_area_key_application_00 = ef979e289a132c23d39c4ec5a0bba969 +key_area_key_application_01 = cdedbab97b69729073dfb2440bff2c13 +key_area_key_application_02 = 75716ed3b524a01dfe21456ce26c7270 +key_area_key_application_03 = f428306544cf5707c25eaa8bc0583fd1 +key_area_key_application_04 = 798844ec099eb6a04b26c7c728a35a4d +key_area_key_application_05 = a57c6eecc5410ada22712eb3ccbf45f1 +key_area_key_application_06 = 2a60f6c4275df1770651d5891b8e73ec +key_area_key_application_07 = 32221bd6ed19b938bec06b9d36ed9e51 +key_area_key_application_08 = fb20aa9e3dbf67350e86479eb431a0b3 +key_area_key_application_09 = ce8d5fa79e220d5f48470e9f21be018b +key_area_key_application_0a = 38b865725adcf568a81d2db3ceaa5bcc +key_area_key_application_0b = bbddfd40a59d0ff555c0954239972213 +key_area_key_application_0c = 3fee7204e21c6b0ff1373226c0c3e055 +key_area_key_application_0d = 7b05d214fa554bc3e91b044fb412fc0d +key_area_key_application_0e = 061667d7668b76a423e3f1aea52a8baa +key_area_key_application_0f = 7ee19b046987ba2588e852cc24bc2953 +key_area_key_application_10 = fd8a4be923d9a464793cd2f3a27557ee +key_area_key_application_11 = d8178dba2fb20ed3141612b6cb2e8e9d +key_area_key_application_12 = 56debb519556d05e8ab3ddb9a1e4c1d9 +key_area_key_application_13 = 76a3a1e5963759e5c0c178a93b547880 +key_area_key_application_14 = dbd99c9834f2bb2bf8dacef3f8e090d5 +key_area_key_application_source = 7f59971e629f36a13098066f2144c30d +key_area_key_ocean_00 = b33813e4c9c4399c75fabc673ab4947b +key_area_key_ocean_01 = c54166efa8c9c0f6511fa8b580191677 +key_area_key_ocean_02 = 3061ce73461e0b0409d6a33da85843c8 +key_area_key_ocean_03 = 06f170025a64921c849df168e74d37f2 +key_area_key_ocean_04 = dc857fd6dc1c6213076ec7b902ec5bb6 +key_area_key_ocean_05 = 131d76b70bd8a60036d8218c15cb610f +key_area_key_ocean_06 = 17d565492ba819b0c19bed1b4297b659 +key_area_key_ocean_07 = 37255186f7678324bf2b2d773ea2c412 +key_area_key_ocean_08 = 4115c119b7bd8522ad63c831b6c816a6 +key_area_key_ocean_09 = 792bfc652870cca7491d1685384be147 +key_area_key_ocean_0a = dfcc9e87e61c9fba54a9b1c262d41e4d +key_area_key_ocean_0b = 66fe3107f5a6a8d8eda2459d920b07a1 +key_area_key_ocean_0c = b79b6bf3d6cdc5ec10277fc07a4fec93 +key_area_key_ocean_0d = 9a20ffbdcb03cfc5b8e88b058d27ae6c +key_area_key_ocean_0e = 1e8bba40c91ca4d55163cdfb779a2f4e +key_area_key_ocean_0f = 2a51262c614e175f22cb0bf7907418b0 +key_area_key_ocean_10 = 97b66913f9683a9e7b733b96a35cabf3 +key_area_key_ocean_11 = 42da6ca5bc5dc88dac81ba0729414af1 +key_area_key_ocean_12 = 0a9a14c74c9f46a3e0826c6e0857d199 +key_area_key_ocean_13 = f74d1295fdadce4a54d142e6f93f8f4f +key_area_key_ocean_14 = 632f252b1553707e7293ab860a1af19f +key_area_key_ocean_source = 327d36085ad1758dab4e6fbaa555d882 +key_area_key_system_00 = 6dd02aa15b440d6231236b6677de86bc +key_area_key_system_01 = 4ab155e7f29a292037fd147592770b12 +key_area_key_system_02 = b7a74adeaf89c2a198c327bdff322d7d +key_area_key_system_03 = d5aab1acd23a8aec284a316df859d377 +key_area_key_system_04 = 9b44b45b37de9d14754b1d22c2ca742c +key_area_key_system_05 = 0012e957530d3dc7af34fbbe6fd44559 +key_area_key_system_06 = 01744e3b0818445cd54ee9f89da43192 +key_area_key_system_07 = d0d30e46f5695b875f11522c375c5a80 +key_area_key_system_08 = bd06cb1b86bd5c433667470a09eb63de +key_area_key_system_09 = e19f788f658eda8bbf34a1dd2a9503a9 +key_area_key_system_0a = 7070e7ff5cfe448630143a9874903c38 +key_area_key_system_0b = 3fa471d4483e58b8f7756fcb64f63890 +key_area_key_system_0c = 7bfd381df3369407ab1c6bdd9fabf522 +key_area_key_system_0d = 53ed531cd657edf443b551a964f44ecc +key_area_key_system_0e = fa9d4958e8f8f2c8c8ae33b1034a0a02 +key_area_key_system_0f = 91eae4eeb5335cc5a706c4fe81d8d8af +key_area_key_system_10 = ae11fa6821b123419e0a54f3a89d9a8b +key_area_key_system_11 = 6cb02ff14b6bb1145345dcbe6daaa0a9 +key_area_key_system_12 = 9ba3e06e93313a726e23bd2d32c494a2 +key_area_key_system_13 = 2215008857d08cba3fe69764d7adb0a4 +key_area_key_system_14 = eae7d84910294d0c5e5c9b1b26b315b5 +key_area_key_system_source = 8745f1bba6be79647d048ba67b5fda4a +keyblob_key_source_00 = df206f594454efdc7074483b0ded9fd3 +keyblob_key_source_01 = 0c25615d684ceb421c2379ea822512ac +keyblob_key_source_02 = 337685ee884aae0ac28afd7d63c0433b +keyblob_key_source_03 = 2d1f4880edeced3e3cf248b5657df7be +keyblob_key_source_04 = bb5a01f988aff5fc6cff079e133c3980 +keyblob_key_source_05 = d8cce1266a353fcc20f32d3b517de9c0 +keyblob_mac_key_source = 59c7fb6fbe9bbe87656b15c0537336a5 +mariko_master_kek_source_05 = 77605ad2ee6ef83c3f72e2599dac5e56 +mariko_master_kek_source_06 = 1e80b8173ec060aa11be1a4aa66fe4ae +mariko_master_kek_source_07 = 940867bd0a00388411d31adbdd8df18a +mariko_master_kek_source_08 = 5c24e3b8b4f700c23cfd0ace13c3dc23 +mariko_master_kek_source_09 = 8669f00987c805aeb57b4874de62a613 +mariko_master_kek_source_0a = 0e440cedb436c03faa1daebf62b10982 +mariko_master_kek_source_0b = e541acecd1a7d1abed0377f127caf8f1 +mariko_master_kek_source_0c = 52719bdfa78b61d8d58511e48e4f74c6 +mariko_master_kek_source_0d = d268c6539d94f9a8a5a8a7c88f534b7a +mariko_master_kek_source_0e = ec61bc821e0f5ac32b643f9dd619222d +mariko_master_kek_source_0f = a5ec16391a3016082ecf096f5e7ceea9 +mariko_master_kek_source_10 = 8dee9e11363a9b0a6ac7bbe9d103f780 +mariko_master_kek_source_11 = 4f413c3bfb6a012a689f83e953bd16d2 +mariko_master_kek_source_12 = 31be25fbdbb4ee495c7705c2369f3480 +mariko_master_kek_source_13 = 1a316287a809caf8691545c26baa5a8a +mariko_master_kek_source_14 = ebf35b2d4a2dce453a6f61380b003b46 +master_kek_05 = 94a92da1d73c2b3e165c891ced5607fc +master_kek_06 = a6c7b7870e42d5302fe6110883aa3889 +master_kek_07 = 5cf8c1d58063aff640aaa681f0ce426c +master_kek_08 = e42f1ec8002043d746575ae6dd9f283f +master_kek_09 = cec2885fbeef5f6a989db84a4cc4b393 +master_kek_0a = dd1a730232522b5cb4590cd43869ab6a +master_kek_0b = fc6f0c891d42710180724ed9e112e72a +master_kek_0c = 43f7fc20fcec22a5b2a744790371b094 +master_kek_0d = 8dc9a8223671daa73ccd8b93cdaaed9f +master_kek_0e = f3f857257c3f63ca63b9c9710b8f673e +master_kek_0f = 1e8f01c4927a76a66097df44c3bad27d +master_kek_10 = 8b523b9d476508daadc2036582ce5aa8 +master_kek_11 = c618d3fd0ee15ffcea22bc98ad2489b5 +master_kek_12 = f540a14ea2cce8d0ede62a56586bfb0e +master_kek_13 = 5ab6b61cf29dd5d8e40fbb43e459fa88 +master_kek_14 = 2698651a8c2984253767669ba71b9346 +master_kek_source_06 = 374b772959b4043081f6e58c6d36179a +master_kek_source_07 = 9a3ea9abfd56461c9bf6487f5cfa095c +master_kek_source_08 = dedce339308816f8ae97adec642d4141 +master_kek_source_09 = 1aec11822b32387a2bedba01477e3b67 +master_kek_source_0a = 303f027ed838ecd7932534b530ebca7a +master_kek_source_0b = 8467b67f1311aee6589b19af136c807a +master_kek_source_0c = 683bca54b86f9248c305768788707923 +master_kek_source_0d = f013379ad56351c3b49635bc9ce87681 +master_kek_source_0e = 6e7786ac830a8d3e7db766a022b76e67 +master_kek_source_0f = 99220957a7f95e94fe787f41d6e756e6 +master_kek_source_10 = 71b9a6c0ff976b0cb440b9d5815d8190 +master_kek_source_11 = 00045df04dcd14a31cbfde4855ba35c1 +master_kek_source_12 = d76374464eba780a7c9db3e87a3d71e3 +master_kek_source_13 = a17d34db2d9ddae5f815634c8fe76cd8 +master_kek_source_14 = 66c8cb3decf459735488e12ee63d6846 +master_key_00 = c2caaff089b9aed55694876055271c7d +master_key_01 = 54e1b8e999c2fd16cd07b66109acaaa6 +master_key_02 = 4f6b10d33072af2f250562bff06b6da3 +master_key_03 = 84e04ec20b9373818c540829cf147f3d +master_key_04 = cfa2176790a53ff74974bff2af180921 +master_key_05 = c1dbedcebf0dd6956079e506cfa1af6e +master_key_06 = 0aa90e6330cdc12d819b3254d11a4e1e +master_key_07 = 929f86fbfe4ef7732892bf3462511b0e +master_key_08 = 23cfb792c3cb50cd715da0f84880c877 +master_key_09 = 75c93b716255319b8e03e14c19dea64e +master_key_0a = 73767484c73088f629b0eeb605f64aa6 +master_key_0b = 8500b14bf4766b855a26ffc614097a8f +master_key_0c = b3c503709135d4b35de31be4b0b9c0f7 +master_key_0d = 6d2b26416ab030dc504cbfd6bb2977b7 +master_key_0e = 3b995e3bf23207c3cacb07f8c57415e6 +master_key_0f = ff22454d86237004c750e2dcb4b16c80 +master_key_10 = 252c7d95f296d07f2369bdba6d42c615 +master_key_11 = 03d1d722e91bf7f2c8f3c00283bf5c6c +master_key_12 = 32ecadc8986540f930f54d159fcba88e +master_key_13 = 5146f2e7096bd2f8fa14030b883a98d0 +master_key_14 = 4c9b499cc482b0fe8c6c2f698e19ff64 +master_key_source = d8a2410ac6c59001c61d6a267c513f3c +package2_key_00 = a35a19cb14404b2f4460d343d178638d +package2_key_01 = a0dd1eacd438610c85a191f02c1db8a8 +package2_key_02 = 7e5ba2aafd57d47a85fd4a57f2076679 +package2_key_03 = bf03e9889fa18f0d7a55e8e9f684323d +package2_key_04 = 09df6e361e28eb9c96c9fa0bfc897179 +package2_key_05 = 444b1a4f9035178b9b1fe262462acb8e +package2_key_06 = 442cd9c21cfb8914587dc12e8e7ed608 +package2_key_07 = 70c821e7d6716feb124acbac09f7b863 +package2_key_08 = 8accebcc3d15a328a48365503f8369b6 +package2_key_09 = f562a7c6c42e3d4d3d13ffd504d77346 +package2_key_0a = 0803167ec7fc0bc753d8330e5592a289 +package2_key_0b = 341db6796aa7bdb8092f7aae6554900a +package2_key_0c = 4e97dc4225d00c6ae33d49bddd17637d +package2_key_0d = db13c2de2c313540b18a32b4f106d4a1 +package2_key_0e = 254d393b26e6d98963c1c8c4fa6d11e2 +package2_key_0f = 1c87f9650cca54af03df3590021e457d +package2_key_10 = 2d64ee13cece88746b375f1a43b9fdf6 +package2_key_11 = 73a9680bbd12d3a05c6eddb9545c4077 +package2_key_12 = 64f022a4150139a118608f55e5621c72 +package2_key_13 = 56adb5ca4e65d0ce48b2d70129cb87e1 +package2_key_14 = d8118afae97877041ae563eff14de93c +package2_key_source = fb8b6a9c7900c849efd24d854d30a0c7 +per_console_key_source = 4f025f0eb66d110edc327d4186c2f478 +retail_specific_aes_key_source = e2d6b87a119cb880e822888a46fba195 +save_mac_kek_source = d89c236ec9124e43c82b038743f9cf1b +save_mac_key = d623f7fe4b68d2c5f59b8eda8be683ae +save_mac_key_source = e4cd3d4ad50f742845a487e5a063ea1f +save_mac_sd_card_kek_source = 0489ef5d326e1a59c4b7ab8c367aab17 +save_mac_sd_card_key_source = 6f645947c56146f9ffa045d595332918 +sd_card_custom_storage_key_source = 370c345e12e4cefe21b58e64db52af354f2ca5a3fc999a47c03ee004485b2fd0 +sd_card_kek_source = 88358d9c629ba1a00147dbe0621b5432 +sd_card_nca_key_source = 5841a284935b56278b8e1fc518e99f2b67c793f0f24fded075495dca006d99c2 +sd_card_save_key_source = 2449b722726703a81965e6e3ea582fdd9a951517b16e8f7f1f68263152ea296a +ssl_rsa_kek = b011100660d1dccbad1b1b733afa9f95 +ssl_rsa_kek_personalized = f6f6f26ace89a681fa6b3870b47a5f77 +ssl_rsa_kek_source = 9a383bf431d0bd8132534ba964397de3 +ssl_rsa_kekek_source = 7f5bb0847b25aa67fac84be23d7b6903 +ssl_rsa_key = 43e0775b5c220a9d75ec736d067d5461566f6710d4ede02f67031beb55cecbdf9ada949ca161d91616b2101cb34915db1b6992a2de8f9755cd8141e94d7bc194e1a0c3d4395bbfb034880b5f9db43de01c87edfb499f4db9cbe37a7ffc436cbb3eb13dddbd66f61a38ca7f54c8382e62e238b9776f34dcf3aedbe04b58099b9e879694d3957574a02293d4f795fd6cfedad0384765ead58bea26674b151f60ea59cf679789b95d041804df4297bca3e66bd1cce4898af7f0f9f64c0bf74c567c0240b6be44f6e27cc70cef0528ceaac8368ba89063551f0434f3ab163050f0330ec7789fbb77359cc667b279b24269dcf03a4d56a25158ba1b09e8c7611b8fa1 +titlekek_00 = 62a24d6e6d0d0e0abf3554d259be3dc9 +titlekek_01 = 8821f642176969b1a18021d2665c0111 +titlekek_02 = 5d15b9b95a5739a0ac9b20f600283962 +titlekek_03 = 1b3f63bcb67d4b06da5badc7d89acce1 +titlekek_04 = e45c1789a69c7afbbf1a1e61f2499459 +titlekek_05 = ddc67f7189f4527a37b519cb051eee21 +titlekek_06 = b1532b9d38ab036068f074c0d78706ac +titlekek_07 = 81dc1b1783df268789a6a0edbf058343 +titlekek_08 = 47dfe4bf0eeda88b17136b8005ab08ea +titlekek_09 = adaa785d90e1a9c182ac07bc276bf600 +titlekek_0a = 42daa957c128f75bb1fda56a8387e17b +titlekek_0b = d08903363f2c8655d3de3ccf85d79406 +titlekek_0c = be2682599db34caa9bc7ebb2cc7c654c +titlekek_0d = 41071f95beddc4114a03e0072e6ccab7 +titlekek_0e = e342365a0fa0fa4a28a7bc00e45b3f68 +titlekek_0f = 105999eaf8b71d199bf201f525b2c68d +titlekek_10 = 3796fcdb27351d58cc3f3379dda04202 +titlekek_11 = b16d793f4be5394e60a6e426e172c16a +titlekek_12 = 0cd263cbddcbeca9ffa779edbe708664 +titlekek_13 = 8d4d403cd8c5ec76c3d777ac55c7ef35 +titlekek_14 = 2d44b28c78de6ef226d9d70e2f6362a2 +titlekek_source = 1edc7b3b60e6b4d878b81715985e629b diff --git a/Troposphere Docs/SetupApt.txt b/Troposphere Docs/SetupApt.txt new file mode 100644 index 0000000..e4f8ea8 --- /dev/null +++ b/Troposphere Docs/SetupApt.txt @@ -0,0 +1,33 @@ +we will hope you have a clean dualroot env, + +to install things apt requires some stuff (here also includes a systemd fix which you will probably need) + + + + +#====> Start Out of root +cp /etc/resolv.conf /opt/test/dual_rootfs/etc/resolv.conf +cp /etc/hosts /opt/test/dual_rootfs/etc/hosts +mount --bind /proc /opt/test/dual_rootfs/proc +mount --bind /sys /opt/test/dual_rootfs/sys +mount --bind /dev /opt/test/dual_rootfs/dev +mount --bind /dev/pts /opt/test/dual_rootfs/dev/pts +mount --bind /dev /opt/test/dual_rootfs/dev +mount -t devpts devpts /opt/test/dual_rootfs/dev/pts +mount -t proc proc /opt/test/dual_rootfs/proc +mount -t sysfs sys /opt/test/dual_rootfs/sys +#<= ENTER + +echo 'APT::Sandbox::User "root";' > /etc/apt/apt.conf.d/99sandbox #<-------- FIX APT!! + + + +#1. Overwrite failing systemd postinst script with a successful dummy +echo '#!/bin/sh' > /var/lib/dpkg/info/systemd.postinst +echo 'exit 0' >> /var/lib/dpkg/info/systemd.postinst +chmod +x /var/lib/dpkg/info/systemd.postinst + +#2. Get a nameserver in there + +echo "nameserver 8.8.8.8" > /etc/resolv.conf +echo "nameserver 1.1.1.1" >> /etc/resolv.conf diff --git a/Troposphere Docs/SetupEnviroment.txt b/Troposphere Docs/SetupEnviroment.txt new file mode 100644 index 0000000..106bc60 --- /dev/null +++ b/Troposphere Docs/SetupEnviroment.txt @@ -0,0 +1,9 @@ +to setup debootstrap env + +# mount -t proc /proc /opt/test/dual_rootfs/proc +# mount -t sysfs /sys /opt/test/dual_rootfs/sys +# mount --bind /dev /opt/test/dual_rootfs/dev +# mount --bind /dev/pts /opt/test/dual_rootfs/dev/pts +# chroot /opt/test/dual_rootfs /debootstrap/debootstrap --second-stage + + diff --git a/Troposphere Docs/steps to setup apt inside chroot b/Troposphere Docs/steps to setup apt inside chroot new file mode 100644 index 0000000..a4be9b9 --- /dev/null +++ b/Troposphere Docs/steps to setup apt inside chroot @@ -0,0 +1,108 @@ + + + +setup binds for apt : + +mount --bind /dev /opt/test/dual_rootfs/dev +mount --bind /dev/pts /opt/test/dual_rootfs/dev/pts + + +apt update +apt install xorg fastfetch vi + +# get open gl: + +apt install -y mesa-utils libgl1 libglx-mesa0 libgl1-mesa-dri x11-utils + +# 5. Shared memory / IPC x11 neeeeds this & for OpenGL rendering +mount -t tmpfs tmpfs "$CHROOT_PATH/tmp" 2>/dev/null +mount -t tmpfs tmpfs "$CHROOT_PATH/run" 2>/dev/null +mount --bind /dev/shm "$CHROOT_PATH/dev/shm" 2>/dev/null + + +mount --bind /tmp/.X11-unix /opt/test/dual_rootfs/tmp/.X11-unix 2>/dev/null + + + + + + + + + +cat << 'EOF' > /tmp/start_debian_xfce.sh +#!/bin/sh +# 1. Ensure essential mounts exist +mountpoint -q /opt/test/dual_rootfs/proc || mount -t proc /proc /opt/test/dual_rootfs/proc +mountpoint -q /opt/test/dual_rootfs/sys || mount -t sysfs /sys /opt/test/dual_rootfs/sys +mountpoint -q /opt/test/dual_rootfs/dev || mount --bind /dev /opt/test/dual_rootfs/dev +mountpoint -q /opt/test/dual_rootfs/dev/pts || mount --bind /dev/pts /opt/test/dual_rootfs/dev/pts +mountpoint -q /opt/test/dual_rootfs/dev/shm || mount -t tmpfs -o mode=1777,nosuid,nodev tmpfs /opt/test/dual_rootfs/dev/shm +mountpoint -q /opt/test/dual_rootfs/tmp || mount --bind /tmp /opt/test/dual_rootfs/tmp +mountpoint -q /opt/test/dual_rootfs/var/run || mount --bind /var/run /opt/test/dual_rootfs/var/run + +# 2. Launch XFCE with DISPLAY explicitly passed into Debian +exec chroot /opt/test/dual_rootfs /usr/bin/env DISPLAY=:0 /usr/bin/startxfce4 +EOF + +chmod +x /tmp/start_debian_xfce.sh + + + + + + +[TO FIX SYSTEMD & PSSWD] +# 1. Overwrite the postinst script cleanly (single quotes prevent the ! error) +echo '#!/bin/sh' > /var/lib/dpkg/info/dbus-system-bus-common.postinst +echo 'exit 0' >> /var/lib/dpkg/info/dbus-system-bus-common.postinst +chmod +x /var/lib/dpkg/info/dbus-system-bus-common.postinst + +# 2. Tell dpkg to configure everything +dpkg --configure -a + + + +TO GRAB DISPLAY!!! + + +1. find authority file: + +# ps | grep -i x + 118 root [ext4-dio-unwrit] + 124 root [ext4-dio-unwrit] + 126 root [ext4-dio-unwrit] + 128 root [ext4-dio-unwrit] + 191 root [wl12xx_wq] + 194 root [irq/406-wl18xx] + 257 root [dsx_rebuild_wor] + 260 root [dsx_exp_workque] + 346 root {startx} /bin/sh /usr/bin/startx + 369 root xinit /etc/X11/xinit/xinitrc -- /usr/bin/X :0 -auth /tmp/.serverauth.346 <<<<<<<<<</dev/null + + + + +mount -t proc proc /opt/test/dual_rootfs/proc +mount -t sysfs sys /opt/test/dual_rootfs/sys +mount --bind /dev /opt/test/dual_rootfs/dev + +# Re-enter chroot +chroot /opt/test/dual_rootfs /bin/bash + +=============================================================================================================================================================================== +=============================================================================================================================================================================== +=============================================================================================================================================================================== + + + + +