{"id":551,"date":"2023-03-30T17:48:06","date_gmt":"2023-03-30T09:48:06","guid":{"rendered":"https:\/\/doc.orionstar.com\/en\/?post_type=lsvr_kba&#038;p=551"},"modified":"2024-07-03T15:36:33","modified_gmt":"2024-07-03T07:36:33","slug":"speech-ability","status":"publish","type":"lsvr_kba","link":"https:\/\/doc.orionstar.com\/en\/knowledge-base\/speech-ability\/","title":{"rendered":"Speech Ability"},"content":{"rendered":"\n<h3 id=\"api-reference-speech-ability-introduction\"><strong>Introduction<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-introduction\"><\/a><\/h3>\n\n\n\n<p>Speech Ability includes listening and speaking abilities.<\/p>\n\n\n\n<p>Ability to listen:<\/p>\n\n\n\n<div class=\"is-layout-flex wp-container-2 wp-block-columns has-small-font-size\">\n<div class=\"is-layout-flow wp-block-column\" style=\"flex-basis:100%\">\n<blockquote class=\"wp-block-quote\">\n<p>ASR part returns through SkillCallback, and NLP part returns through ModuleCallBack.<\/p>\n<\/blockquote>\n<\/div>\n<\/div>\n\n\n\n<p>Ability to speak:<\/p>\n\n\n\n<div class=\"is-layout-flex wp-container-4 wp-block-columns has-small-font-size\">\n<div class=\"is-layout-flow wp-block-column\" style=\"flex-basis:100%\">\n<blockquote class=\"wp-block-quote\">\n<p>A variety of speakers can be adjusted in the settings.<\/p>\n<\/blockquote>\n<\/div>\n<\/div>\n\n\n\n<h3 id=\"api-reference-speech-ability-create-speech-service-callback\"><strong>Create speech service callback<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-create-speech-service-callback\"><\/a><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">SkillCallback mSkillCallback = new SkillCallback() {    \n    @Override    \n    public void onSpeechParResult(String s) throws RemoteException {        \n        \/\/The result of temporary speech recognition    \n    }    \n    @Override    \n    public void onStart() throws RemoteException {        \n        \/\/Start recognition    \n    }    \n    @Override    \n    public void onStop() throws RemoteException {        \n        \/\/ end of recognition    \n    }    \n    @Override    \n    public void onVolumeChange(int volume) throws RemoteException {        \n        \/\/The size of the recognized voice changes    \n    }    \n    \/**     \n     * @param status 0: return normally     \n     * 1: other returns     \n     * 2: Noise or single_other return     \n     * 3: Timeout     \n     * 4: Forced to cancel     \n     * 5: The asr result ends early, without passing through NLU     \n     * 6: In the case of full duplex with the same semantics, other returns     \n     *\/    \n    @Override    \n    public void onQueryEnded(int status) throws RemoteException {    \n    }    \n    @Override    \n    public void onQueryAsrResult(String asrResult) throws RemoteException {        \n        \/\/asrResult: final recognition result    \n    }\n};<\/pre>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-connect-to-speech-service\"><strong>Connect to speech service<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-connect-to-speech-service\"><\/a><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">final SkillApi skillApi = new SkillApi();\nskillApi.connectApi(context, new ApiListener() {     \n    @Override     \n    public void handleApiDisabled() {     \n    }     \n    @Override     \n    public void handleApiConnected() {         \n        \/\/Voice service connection is successful, register voice callback                 \n        skillApi.registerCallBack(mSkillCallback);     \n    }     \n    @Override     \n    public void handleApiDisconnected() {         \n        \/\/Voice service has been disconnected     \n    }\n});<\/pre>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-tts-playback\"><strong>TTS playback<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-tts-playback\"><\/a><\/h3>\n\n\n\n<p>Method name: playText<\/p>\n\n\n\n<p>Call method\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">skillApi.playText(text, new TextListener() {     \n    @Override     \n    public void onStart() {         \n        \/\/Play start     \n    }     \n    @Override     \n    public void onStop() {         \n        \/\/Play stop     \n    }     \n    @Override     \n    public void onError() {         \n        \/\/Play error     \n    }     \n    @Override     \n    public void onComplete() {         \n        \/\/Play is complete     \n    }\n});<\/pre>\n\n\n\n<p>Parameter Description:<\/p>\n\n\n\n<ul>\n<li><code>text<\/code>\u00a0: TTS playback text  <strong><mark class=\"has-inline-color has-vivid-red-color\">Note<\/mark><\/strong>: Please avoid using long strings in TTS text that we cannot support, such as hyperlinks, scrambled character sequences, etc. This may cause program calls to fail. It is recommended to keep a single TTS playback within 300 characters, with a maximum limit of 1000 characters. If the text content is too long, it can be divided into segments for TTS playback.<\/li>\n<\/ul>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-stop-tts-playback\"><strong>Stop TTS playback<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-stop-tts-playback\"><\/a><\/h3>\n\n\n\n<p>Method name: stopTTS<\/p>\n\n\n\n<p>Calling method:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">skillApi.stopTTS();<\/pre>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-set-speech-recognition-mode\"><strong>Set speech recognition mode<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-set-speech-recognition-mode\"><\/a><\/h3>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\">Note: The interface will only take effect when &#8220;Voice Settings&#8221; and &#8220;Continuous Pickup&#8221; are turned on in the robot settings<\/p>\n\n\n\n<p>Method name: setRecognizeMode<\/p>\n\n\n\n<p>Calling method:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">skillApi.setRecognizeMode(isContinue);<\/pre>\n\n\n\n<p>Parameter Description:<\/p>\n\n\n\n<ul>\n<li><code>isContinue<\/code>: boolean type, true continuous recognition false single recognition<\/li>\n<\/ul>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-turn-off-or-turn-on-speech-recognition\"><strong>Turn off or turn on speech recognition<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-turn-off-or-turn-on-speech-recognition\"><\/a><\/h3>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\">Note: The interface will only take effect when &#8220;Voice Settings&#8221; and &#8220;Continuous Pickup&#8221; are turned on in the robot settings<\/p>\n\n\n\n<p>Method name: setRecognizable<\/p>\n\n\n\n<p>Calling method:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">skillApi.setRecognizable(enable);<\/pre>\n\n\n\n<p>Parameter Description:<\/p>\n\n\n\n<ul>\n<li><code>enable<\/code>: boolean type, true open false close<\/li>\n<\/ul>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-set-speech-recognition-area\"><strong>Set speech recognition area<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-set-speech-recognition-area\"><\/a><\/h3>\n\n\n\n<p>Method name: setAngleCenterRange<\/p>\n\n\n\n<p>Calling method:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">skillApi.setAngleCenterRange(angleCenter, angleRange);<\/pre>\n\n\n\n<p><strong>Only the first generation algorithm supports setting the center angle for this interface, while the second generation algorithm does not.<\/strong><\/p>\n\n\n\n<p>Parameter Description:<\/p>\n\n\n\n<ul>\n<li><code>angleCenter<\/code>&nbsp;: center angle, float type, [0,360)<\/li>\n\n\n\n<li><code>angleRange<\/code>&nbsp;: interval angle, float type,&nbsp;0,120<\/li>\n<\/ul>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>NO<\/td><td>NO<\/td><td>NO<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-get-nlp-results-through-text\"><strong>Get NLP results through text<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-get-nlp-results-through-text\"><\/a><\/h3>\n\n\n\n<p>Method name: queryByText<\/p>\n\n\n\n<p>Calling method:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">skillApi.queryByText(text);<\/pre>\n\n\n\n<p>Parameter Description:<\/p>\n\n\n\n<ul>\n<li><code>text<\/code>&nbsp;: the text to be queried, String type<\/li>\n<\/ul>\n\n\n\n<p><em>Note: This interface has no return value. The result of the query is returned as a voice command through onSendRequest of ModuleCallback.<\/em><\/p>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-sound-recording\"><strong>Sound recording<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-sound-recording\"><\/a><\/h3>\n\n\n\n<p>This is a part about sound recording.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/Audio sampling rate (fixed 16000)\nprivate final int AUDIO_RATE = 16000;\n\/\/Buffer length\nprivate final int AUDIO_BUF_LEN = 640;\n\/\/Channel (stereo)\nint channelConfig = AudioFormat.CHANNEL_IN_STEREO;\nint minRecBufSize = AudioRecord.getMinBufferSize(AUDIO_RATE, channelConfig, AudioFormat.ENCODING_PCM_16BIT);\nint recBufSize = minRecBufSize * 2;\nAudioRecord audioRecorder =new AudioRecord(AudioSource.MIC, AUDIO_RATE, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, recBufSize);\n\/\/data collection\nbyte[] tempBufRec = new byte[AUDIO_BUF_LEN];\nbyte[] bfOutLeft = new byte[AUDIO_BUF_LEN \/ 2];\nbyte[] bfOutRight = new byte[AUDIO_BUF_LEN \/ 2];\nint bufferSize = 5 * 2 * 16000;\nint readBytes = audioRecorder.read(tempBufRec, 0, bufferSize);\nif (readBytes == bufferSize) {    \n    deinterleaveData(tempBufRec, bfOutLeft, bfOutRight, bufferSize);    \n    \/\/The separated data, bfOutLeft is the final required data\n}\n\/\/Left and right channel data separation\nprivate void deinterleaveData(byte[] src, byte[] leftdest, byte[] rightdest, int len) {    \n    int rIndex = 0;    \n    int lIndex = 0;    \n    for (int i = 0; i &lt;len;) {        \n        leftdest[rIndex] = src[i];        \n        leftdest[rIndex + 1] = src[i + 1];        \n        rIndex = rIndex + 2;        \n        rightdest[lIndex] = src[i + 2];        \n        rightdest[lIndex + 1] = src[i + 3];        \n        lIndex = lIndex + 2;        \n        i = i + 4;    \n    }\n}<\/pre>\n\n\n\n<p><em>Note1: All parameters are fixed parameters and cannot be changed, otherwise the data may not be collected.<\/em><\/p>\n\n\n\n<p><em>Note2: All the robots don&#8217;t support VOIP\/SIP protocol, even if use those settings.<\/em><\/p>\n\n\n\n<p>There is a demo to show this function(worked with Mini):&nbsp;<a href=\"https:\/\/orion-base-test-1256573505.cos.ap-beijing.myqcloud.com\/cn_docs_file\/2021-12-20_17%3A27%3A28_OrionAudioRecord.zip\" target=\"_blank\" rel=\"noreferrer noopener\">Download<\/a><\/p>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"api-reference-speech-ability-text-to-mp3\"><strong>text to mp3<\/strong><a href=\"https:\/\/ainirobot.gatsbyjs.io\/docs\/apk\/apk-development\/#api-reference-speech-ability-text-to-mp3\"><\/a><\/h3>\n\n\n\n<p>Method name: textToMp3 Notice: this API only work with Chinese Launguage.<\/p>\n\n\n\n<p>Calling method:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">boolean status = RobotApi.getInstance().textToMp3(reqId, text, path, name,    new CommandListener(){        \n    @Override        \n    public void onResult(int result, String message) {            \n        if (Definition.RESULT_OK == result) {                \n            try {                    \n                JSONObject jsonObject = new JSONObject(message);                    \n                int code = jsonObject.optInt(\"code\");                    \n                String errMessage = jsonObject.optString(\"message\");                    \n                if (code == 0) {                        \n                    mediaPlayer = new MediaPlayer();                        \n                    mediaPlayer.setDataSource(path + File.separator + name);                                \n                    mediaPlayer.prepare();                        \n                    mediaPlayer.start();                    \n                } else{                    \n                }                \n            } catch (JSONException | IOException e) {                    \n                e.printStackTrace();                \n            }            \n        }else {            \n        }        \n    }  \n});<\/pre>\n\n\n\n<p>Parameter Description:<\/p>\n\n\n\n<ul>\n<li><code>reqId<\/code>: int type command id, pass 0<\/li>\n\n\n\n<li><code>text<\/code>: String type to be converted text<\/li>\n\n\n\n<li><code>path<\/code>: String type file path<\/li>\n\n\n\n<li><code>name<\/code>: String type file name<\/li>\n\n\n\n<li><code>listener<\/code>: CommandListener message callback{&#8220;code&#8221;:0, &#8220;message&#8221;:&#8221;err msg&#8221;}<\/li>\n<\/ul>\n\n\n\n<p>Return Value:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int result 0 command executed \/ -1 not executed<\/pre>\n\n\n\n<p>Note: <\/p>\n\n\n\n<p>1. To call the interface, you need the app to apply for sdcard usage rights<\/p>\n\n\n\n<p> 2. After the conversion is successful, an mp<\/p>\n\n\n\n<p>3 file will be generated\/overwritten in the specified path 3. Please manage the file yourself<\/p>\n\n\n\n<p>Applicable Platform:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><thead><tr><th>GreetBot<\/th><th>Mini<\/th><th>Lucki<\/th><th>DeliverBot<\/th><th>BigScreenBot<\/th><\/tr><\/thead><tbody><tr><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Speech Ability includes listening and speaking abilities. Ability to listen: ASR part returns through SkillCallback, and NLP part returns through ModuleCallBack. Ability to speak: A variety of speakers can be adjusted in the settings. Create speech service callback Applicable Platform: GreetBot Mini Lucki DeliverBot BigScreenBot Yes Yes Yes Yes Yes Connect to speech service [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":[],"lsvr_kba_cat":[6],"lsvr_kba_tag":[],"_links":{"self":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba\/551"}],"collection":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba"}],"about":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/types\/lsvr_kba"}],"author":[{"embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":6,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba\/551\/revisions"}],"predecessor-version":[{"id":768,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba\/551\/revisions\/768"}],"wp:attachment":[{"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"lsvr_kba_cat","embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba_cat?post=551"},{"taxonomy":"lsvr_kba_tag","embeddable":true,"href":"https:\/\/doc.orionstar.com\/en\/wp-json\/wp\/v2\/lsvr_kba_tag?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}