Skip to content

Commit

Permalink
user-provided mediastream
Browse files Browse the repository at this point in the history
  • Loading branch information
ricky0123 committed Mar 30, 2023
1 parent 10400d4 commit 7c2f259
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 15 deletions.
2 changes: 1 addition & 1 deletion packages/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"react"
],
"homepage": "https://github.com/ricky0123/vad",
"version": "0.0.14",
"version": "0.0.15",
"license": "ISC",
"main": "dist/index.js",
"devDependencies": {
Expand Down
4 changes: 1 addition & 3 deletions packages/react/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ interface ReactOptions {
userSpeakingThreshold: number
}

export interface ReactRealTimeVADOptions
extends RealTimeVADOptions,
ReactOptions {}
export type ReactRealTimeVADOptions = RealTimeVADOptions & ReactOptions

const defaultReactOptions: ReactOptions = {
startOnLoad: true,
Expand Down
2 changes: 1 addition & 1 deletion packages/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"offline-speech-recognition"
],
"homepage": "https://github.com/ricky0123/vad",
"version": "0.0.11",
"version": "0.0.12",
"license": "ISC",
"main": "dist/index.js",
"unpkg": "dist/bundle.min.js",
Expand Down
35 changes: 25 additions & 10 deletions packages/web/src/real-time-vad.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,25 @@ type AudioConstraints = Omit<
"channelCount" | "echoCancellation" | "autoGainControl" | "noiseSuppression"
>

export interface RealTimeVADOptions
interface RealTimeVADOptionsWithoutStream
extends FrameProcessorOptions,
RealTimeVADCallbacks {
additionalAudioConstraints?: AudioConstraints
workletURL: string
stream: undefined
}

interface RealTimeVADOptionsWithStream
extends FrameProcessorOptions,
RealTimeVADCallbacks {
stream: MediaStream
workletURL: string
}

export type RealTimeVADOptions =
| RealTimeVADOptionsWithStream
| RealTimeVADOptionsWithoutStream

const _getWorkletURL = () => {
return assetPath("vad.worklet.bundle.min.js")
}
Expand All @@ -65,6 +77,7 @@ export const defaultRealTimeVADOptions: RealTimeVADOptions = {
log.debug("Detected speech end")
},
workletURL: _getWorkletURL(),
stream: undefined,
}

export class MicVAD {
Expand All @@ -87,15 +100,17 @@ export class MicVAD {
}

init = async () => {
this.stream = await navigator.mediaDevices.getUserMedia({
audio: {
...this.options.additionalAudioConstraints,
channelCount: 1,
echoCancellation: true,
autoGainControl: true,
noiseSuppression: true,
},
})
if (this.options.stream === undefined)
this.stream = await navigator.mediaDevices.getUserMedia({
audio: {
...this.options.additionalAudioConstraints,
channelCount: 1,
echoCancellation: true,
autoGainControl: true,
noiseSuppression: true,
},
})
else this.stream = this.options.stream

this.audioContext = new AudioContext()
const source = new MediaStreamAudioSourceNode(this.audioContext, {
Expand Down

0 comments on commit 7c2f259

Please sign in to comment.