New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

xfyun-client

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

xfyun-client - npm Package Compare versions

Comparing version 1.0.0 to 1.1.0

dist/chunk-5M24O2D4.cjs

20

dist/api/connection.d.ts

@@ -1,3 +0,2 @@

import * as rxjs from 'rxjs';
import { BehaviorSubject, Subject } from 'rxjs';
import { BehaviorSubject, Subject, Observable } from 'rxjs';
import { ApiConnectionStatus } from './status.js';

@@ -14,3 +13,10 @@ import { ApiOption, AuthOption } from './option.js';

protected $status: BehaviorSubject<ApiConnectionStatus>;
/**
* A stream of 16 bit PCM data.
*/
protected $audio: Subject<Uint8Array>;
/**
* A stream of 16 bit PCM data chunked into `chuckLength` and seperated temporally by `chuckDelay`.
*/
protected $chunked: Observable<Uint8Array>;
protected Option(): O;

@@ -20,4 +26,12 @@ protected Response(): Res;

protected setStatus(status: ApiConnectionStatus): void;
getStatus(): rxjs.Observable<ApiConnectionStatus>;
getSid(): string;
getStatus(): Observable<ApiConnectionStatus>;
/**
* @returns the {@link $audio}
*/
getAudio(): Observable<Uint8Array>;
/**
* @returns the {@link $chunked}
*/
getChunked(): Observable<Uint8Array>;
sendAudioBuffer(audioBuffer: AudioBuffer): Promise<void>;

@@ -24,0 +38,0 @@ sendBuffer(sourceBuffer: Float32Array, sampleRate: number): Promise<void>;

2

dist/api/connection.js

@@ -1,1 +0,1 @@

import{a}from"../chunk-E4YGB4FA.js";import"../chunk-P4WGXM62.js";import"../chunk-N5NFW233.js";import"../chunk-L4NF3W25.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{a as ApiConnection};
import{a}from"../chunk-SE6DDARR.js";import"../chunk-W4BRMK4G.js";import"../chunk-7ZEMB3HS.js";import"../chunk-N5NFW233.js";import"../chunk-IMAYVM2Y.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{a as ApiConnection};

@@ -1,1 +0,1 @@

import"../chunk-JZND3VTD.js";import"../chunk-DYKUDQHN.js";import{a as d}from"../chunk-E4YGB4FA.js";import"../chunk-P4WGXM62.js";import"../chunk-N5NFW233.js";import"../chunk-L4NF3W25.js";import"../chunk-NP4EEY2K.js";import{a as b}from"../chunk-JDCMXEEN.js";import{a as c}from"../chunk-GW4NARR6.js";import{a}from"../chunk-LIPHC4AO.js";export{d as ApiConnection,a as ApiConnectionStatus,b as ApiOption,c as ApiResponse};
import"../chunk-JZND3VTD.js";import{a as d}from"../chunk-SE6DDARR.js";import"../chunk-W4BRMK4G.js";import"../chunk-7ZEMB3HS.js";import"../chunk-N5NFW233.js";import"../chunk-IMAYVM2Y.js";import"../chunk-NP4EEY2K.js";import{a as b}from"../chunk-JDCMXEEN.js";import"../chunk-DYKUDQHN.js";import{a as c}from"../chunk-GW4NARR6.js";import{a}from"../chunk-LIPHC4AO.js";export{d as ApiConnection,a as ApiConnectionStatus,b as ApiOption,c as ApiResponse};

@@ -1,1 +0,1 @@

import{a}from"../chunk-I7AXM2CI.js";import"../chunk-EQKNTHBH.js";import"../chunk-TE2IHAKM.js";import"../chunk-JZND3VTD.js";import"../chunk-DYKUDQHN.js";import"../chunk-E4YGB4FA.js";import"../chunk-P4WGXM62.js";import"../chunk-N5NFW233.js";import"../chunk-L4NF3W25.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{a as IatConnection};
import{a}from"../chunk-A7HV3EZ7.js";import"../chunk-EQKNTHBH.js";import"../chunk-TE2IHAKM.js";import"../chunk-JZND3VTD.js";import"../chunk-SE6DDARR.js";import"../chunk-W4BRMK4G.js";import"../chunk-7ZEMB3HS.js";import"../chunk-N5NFW233.js";import"../chunk-IMAYVM2Y.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-DYKUDQHN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{a as IatConnection};

@@ -1,1 +0,1 @@

import"../chunk-E5GULNMT.js";import{a as d}from"../chunk-I7AXM2CI.js";import{a}from"../chunk-EQKNTHBH.js";import"../chunk-D55QM667.js";import{a as b,b as c}from"../chunk-TE2IHAKM.js";import"../chunk-JZND3VTD.js";import"../chunk-DYKUDQHN.js";import"../chunk-E4YGB4FA.js";import"../chunk-P4WGXM62.js";import"../chunk-N5NFW233.js";import"../chunk-L4NF3W25.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{d as IatConnection,a as IatOption,c as IatResponse,b as IatResponseDataStatus};
import"../chunk-E5GULNMT.js";import"../chunk-D55QM667.js";import{a as d}from"../chunk-A7HV3EZ7.js";import{a}from"../chunk-EQKNTHBH.js";import{a as b,b as c}from"../chunk-TE2IHAKM.js";import"../chunk-JZND3VTD.js";import"../chunk-SE6DDARR.js";import"../chunk-W4BRMK4G.js";import"../chunk-7ZEMB3HS.js";import"../chunk-N5NFW233.js";import"../chunk-IMAYVM2Y.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-DYKUDQHN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{d as IatConnection,a as IatOption,c as IatResponse,b as IatResponseDataStatus};

@@ -14,2 +14,7 @@ export { ApiConnection } from './api/connection.js';

export { IatResponse, IatResponseData, IatResponseDataStatus, IatResponseResult, IatResponseResultWord, IatResponseResultWordContent } from './iat/response.js';
export { chuckDelay, chuckLength } from './utils/const.js';
export { resample } from './utils/resample.js';
export { splitInChunks } from './utils/splitInChunks.js';
export { from16BitPCM, to16BitPCM } from './utils/to16BitPCM.js';
export { toBase64 } from './utils/toBase64.js';
import 'rxjs';

@@ -1,1 +0,1 @@

import"./chunk-DGPTPROM.js";import{a as x}from"./chunk-KRWZA47M.js";import{a as p,b as t}from"./chunk-AC2MBQTL.js";import{a as m}from"./chunk-HMTOY2UQ.js";import"./chunk-BSEC2ZXW.js";import"./chunk-E5GULNMT.js";import{a as d}from"./chunk-I7AXM2CI.js";import{a}from"./chunk-EQKNTHBH.js";import"./chunk-D55QM667.js";import{a as b,b as c}from"./chunk-TE2IHAKM.js";import"./chunk-JZND3VTD.js";import"./chunk-DYKUDQHN.js";import{a as f}from"./chunk-E4YGB4FA.js";import"./chunk-P4WGXM62.js";import"./chunk-N5NFW233.js";import"./chunk-L4NF3W25.js";import"./chunk-NP4EEY2K.js";import{a as r}from"./chunk-JDCMXEEN.js";import{a as e}from"./chunk-GW4NARR6.js";import{a as o}from"./chunk-LIPHC4AO.js";export{f as ApiConnection,o as ApiConnectionStatus,r as ApiOption,e as ApiResponse,d as IatConnection,a as IatOption,c as IatResponse,b as IatResponseDataStatus,x as IseConnection,m as IseOption,t as IseResponse,p as IseResponseDataStatus};
import"./chunk-E5GULNMT.js";import"./chunk-D55QM667.js";import"./chunk-DGPTPROM.js";import{a as i}from"./chunk-CF2WP2BS.js";import{a as g,b as h}from"./chunk-AC2MBQTL.js";import{a as d}from"./chunk-HMTOY2UQ.js";import"./chunk-BSEC2ZXW.js";import{a as n}from"./chunk-A7HV3EZ7.js";import{a as j}from"./chunk-EQKNTHBH.js";import{a as k,b as l}from"./chunk-TE2IHAKM.js";import"./chunk-JZND3VTD.js";import{a as c}from"./chunk-SE6DDARR.js";import{a,b}from"./chunk-W4BRMK4G.js";import{a as o}from"./chunk-7ZEMB3HS.js";import{a as f}from"./chunk-N5NFW233.js";import{a as r,b as e}from"./chunk-IMAYVM2Y.js";import{a as x}from"./chunk-NP4EEY2K.js";import{a as p}from"./chunk-JDCMXEEN.js";import"./chunk-DYKUDQHN.js";import{a as t}from"./chunk-GW4NARR6.js";import{a as m}from"./chunk-LIPHC4AO.js";export{c as ApiConnection,m as ApiConnectionStatus,p as ApiOption,t as ApiResponse,n as IatConnection,j as IatOption,l as IatResponse,k as IatResponseDataStatus,i as IseConnection,d as IseOption,h as IseResponse,g as IseResponseDataStatus,b as chuckDelay,a as chuckLength,e as from16BitPCM,o as resample,f as splitInChunks,r as to16BitPCM,x as toBase64};

@@ -1,1 +0,1 @@

import{a}from"../chunk-KRWZA47M.js";import"../chunk-AC2MBQTL.js";import"../chunk-HMTOY2UQ.js";import"../chunk-JZND3VTD.js";import"../chunk-DYKUDQHN.js";import"../chunk-E4YGB4FA.js";import"../chunk-P4WGXM62.js";import"../chunk-N5NFW233.js";import"../chunk-L4NF3W25.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{a as IseConnection};
import{a}from"../chunk-CF2WP2BS.js";import"../chunk-AC2MBQTL.js";import"../chunk-HMTOY2UQ.js";import"../chunk-JZND3VTD.js";import"../chunk-SE6DDARR.js";import"../chunk-W4BRMK4G.js";import"../chunk-7ZEMB3HS.js";import"../chunk-N5NFW233.js";import"../chunk-IMAYVM2Y.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-DYKUDQHN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{a as IseConnection};

@@ -1,1 +0,1 @@

import"../chunk-DGPTPROM.js";import{a as d}from"../chunk-KRWZA47M.js";import{a as b,b as c}from"../chunk-AC2MBQTL.js";import{a}from"../chunk-HMTOY2UQ.js";import"../chunk-BSEC2ZXW.js";import"../chunk-JZND3VTD.js";import"../chunk-DYKUDQHN.js";import"../chunk-E4YGB4FA.js";import"../chunk-P4WGXM62.js";import"../chunk-N5NFW233.js";import"../chunk-L4NF3W25.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{d as IseConnection,a as IseOption,c as IseResponse,b as IseResponseDataStatus};
import"../chunk-DGPTPROM.js";import{a as d}from"../chunk-CF2WP2BS.js";import{a as b,b as c}from"../chunk-AC2MBQTL.js";import{a}from"../chunk-HMTOY2UQ.js";import"../chunk-BSEC2ZXW.js";import"../chunk-JZND3VTD.js";import"../chunk-SE6DDARR.js";import"../chunk-W4BRMK4G.js";import"../chunk-7ZEMB3HS.js";import"../chunk-N5NFW233.js";import"../chunk-IMAYVM2Y.js";import"../chunk-NP4EEY2K.js";import"../chunk-JDCMXEEN.js";import"../chunk-DYKUDQHN.js";import"../chunk-GW4NARR6.js";import"../chunk-LIPHC4AO.js";export{d as IseConnection,a as IseOption,c as IseResponse,b as IseResponseDataStatus};

@@ -1,1 +0,1 @@

import{a}from"../chunk-P4WGXM62.js";export{a as resample};
import{a}from"../chunk-7ZEMB3HS.js";export{a as resample};
declare const to16BitPCM: (input: Float32Array) => Uint8Array;
declare const from16BitPCM: (input: Uint8Array) => Float32Array;
export { to16BitPCM };
export { from16BitPCM, to16BitPCM };

@@ -1,1 +0,1 @@

import{a}from"../chunk-L4NF3W25.js";export{a as to16BitPCM};
import{a,b}from"../chunk-IMAYVM2Y.js";export{b as from16BitPCM,a as to16BitPCM};
{
"name": "xfyun-client",
"version": "1.0.0",
"version": "1.1.0",
"description": "",

@@ -41,3 +41,3 @@ "author": "Arumi Sakura",

"tsup": "^6.7.0",
"typescript": "^5.0.4"
"typescript": "5.1"
},

@@ -44,0 +44,0 @@ "files": [

@@ -1,2 +0,2 @@

import { BehaviorSubject, concatMap, delay, delayWhen, filter, finalize, firstValueFrom, of, Subject } from 'rxjs';
import { BehaviorSubject, concatMap, delay, delayWhen, filter, finalize, firstValueFrom, Observable, of, Subject } from 'rxjs';
import { resample } from '../utils/resample';

@@ -10,6 +10,4 @@ import { to16BitPCM } from '../utils/to16BitPCM';

import { toBase64 } from '../utils/toBase64';
import { chuckLength, chuckDelay } from '../utils/const';
const chuckLength = 1280;
const chuckDelay = 40;
export class ApiConnection<O extends ApiOption = ApiOption, Req extends ApiRequest = ApiRequest, Res extends ApiResponse = ApiResponse> {

@@ -21,4 +19,13 @@ protected option: O;

protected $status = new BehaviorSubject<ApiConnectionStatus>(ApiConnectionStatus.null);
/**
* A stream of 16 bit PCM data.
*/
protected $audio = new Subject<Uint8Array>();
/**
* A stream of 16 bit PCM data chunked into `chuckLength` and seperated temporally by `chuckDelay`.
*/
protected $chunked: Observable<Uint8Array>;
protected Option(): O {

@@ -35,13 +42,13 @@ return new ApiOption() as O;

this.$audio
.pipe(
delayWhen(() => this.$status.pipe(filter((status) => status === ApiConnectionStatus.ready || status === ApiConnectionStatus.ing))),
splitInChunks(chuckLength),
concatMap((x) => of(x).pipe(delay(chuckDelay))),
finalize(() => this.sendEnd()),
)
.subscribe((buffer) => this.sendAudio(buffer));
this.$chunked = this.$audio.pipe(
delayWhen(() => this.$status.pipe(filter((status) => status === ApiConnectionStatus.ready || status === ApiConnectionStatus.ing))),
splitInChunks(chuckLength),
concatMap((x) => of(x).pipe(delay(chuckDelay))),
finalize(() => this.sendEnd()),
);
this.$chunked.subscribe((buffer) => this.sendAudio(buffer));
}
protected setStatus(status: ApiConnectionStatus) {
protected setStatus(status: ApiConnectionStatus): void {
if (this.$status.value !== status) {

@@ -52,11 +59,25 @@ this.$status.next(status);

getStatus() {
getSid(): string {
return this.sid;
}
getStatus(): Observable<ApiConnectionStatus> {
return this.$status.asObservable();
}
getSid() {
return this.sid;
/**
* @returns the {@link $audio}
*/
getAudio(): Observable<Uint8Array> {
return this.$audio.asObservable();
}
async sendAudioBuffer(audioBuffer: AudioBuffer) {
/**
* @returns the {@link $chunked}
*/
getChunked(): Observable<Uint8Array> {
return this.$chunked;
}
async sendAudioBuffer(audioBuffer: AudioBuffer): Promise<void> {
const sourceBuffer = audioBuffer.getChannelData(0);

@@ -67,3 +88,3 @@

async sendBuffer(sourceBuffer: Float32Array, sampleRate: number) {
async sendBuffer(sourceBuffer: Float32Array, sampleRate: number): Promise<void> {
const buffer = resample(sourceBuffer, sampleRate, this.option.sampleRate);

@@ -74,3 +95,3 @@

async send16kBuffer(buffer: Float32Array) {
async send16kBuffer(buffer: Float32Array): Promise<void> {
this.$audio.next(to16BitPCM(buffer));

@@ -81,3 +102,3 @@

async complete() {
async complete(): Promise<Res> {
this.$audio.complete();

@@ -89,3 +110,3 @@ await firstValueFrom(this.$status.pipe(filter((status) => status === ApiConnectionStatus.result)));

async connect() {
async connect(): Promise<void> {
if (this.option.test) {

@@ -148,7 +169,7 @@ this.setStatus(ApiConnectionStatus.init);

protected sendRequest(request: Req) {
protected sendRequest(request: Req): void {
this.webSocket.send(JSON.stringify(request));
}
protected sendAudio(audioChunk: Uint8Array) {
protected sendAudio(audioChunk: Uint8Array): void {
const data = toBase64(audioChunk);

@@ -169,3 +190,3 @@ if (this.$status.value === ApiConnectionStatus.ready) {

protected sendEnd() {
protected sendEnd(): void {
if (!this.option.test) {

@@ -195,3 +216,3 @@ const wrapped = this.wrapEnd();

protected setResponse(response: Res) {
protected setResponse(response: Res): void {
if (response) {

@@ -218,5 +239,5 @@ if (this.sid === '') {

getResponse() {
getResponse(): Res {
return this.response;
}
}

@@ -5,8 +5,8 @@ export class ApiResponse {

isSuccess() {
isSuccess(): boolean {
return true;
}
isEnd() {
isEnd(): boolean {
return true;
}
}
export * from './api';
export * from './ise';
export * from './iat';
export * from './utils/const';
export * from './utils/resample';
export * from './utils/splitInChunks';
export * from './utils/to16BitPCM';
export * from './utils/toBase64';

@@ -1,2 +0,2 @@

export const resample = (sourceBuffer: Float32Array, sampleRate: number, newSampleRate: number) => {
export const resample = (sourceBuffer: Float32Array, sampleRate: number, newSampleRate: number): Float32Array => {
const data = new Float32Array(sourceBuffer);

@@ -3,0 +3,0 @@ const fitCount = Math.round(data.length * (newSampleRate / sampleRate));

@@ -1,2 +0,2 @@

import { to16BitPCM } from './to16BitPCM';
import { from16BitPCM, to16BitPCM } from './to16BitPCM';

@@ -11,1 +11,10 @@ describe('to16BitPCM', () => {

});
describe('from16BitPCM', () => {
it('should convert 16 bit PCM formatted Uint8Array to Float32Array', () => {
const input = new Uint8Array([0xff, 0x7f, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x80]);
const expected = new Float32Array([1.0, -0.5, 0, 0.4999847412109375, -1.0]); // the convertion is inherently imperfect.
expect(from16BitPCM(input)).toStrictEqual(expected);
});
});
export const to16BitPCM = (input: Float32Array): Uint8Array => {
const dataLength = input.length * (16 / 8);
const dataLength = input.length * 2;
const dataBuffer = new ArrayBuffer(dataLength);

@@ -12,1 +12,14 @@ const dataView = new DataView(dataBuffer);

};
export const from16BitPCM = (input: Uint8Array): Float32Array => {
const inputView = new DataView(input.buffer);
const dataLength = input.length * 2;
const dataBuffer = new ArrayBuffer(dataLength);
const dataView = new DataView(dataBuffer);
let offset = 0;
for (let i = 0; i < input.length; i += 2, offset += 4) {
const s = inputView.getInt16(i, true);
dataView.setFloat32(offset, s < 0 ? s / 0x8000 : s / 0x7fff, true);
}
return new Float32Array(dataView.buffer);
};

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc