This commit is contained in:
fkwp
2026-03-26 15:51:46 +01:00
parent c9be83b27d
commit 239480e1f3
5 changed files with 63 additions and 44 deletions

View File

@@ -79,7 +79,9 @@ function downloadFile(fileUrl, filePath, isOptional = false) {
) { ) {
const redirectUrl = response.headers.location; const redirectUrl = response.headers.location;
console.log(` Redirected to: ${redirectUrl}`); console.log(` Redirected to: ${redirectUrl}`);
downloadFile(redirectUrl, filePath, isOptional).then(resolve).catch(reject); downloadFile(redirectUrl, filePath, isOptional)
.then(resolve)
.catch(reject);
return; return;
} }
@@ -141,7 +143,9 @@ async function main() {
} }
console.log("\n✅ Asset setup complete!"); console.log("\n✅ Asset setup complete!");
console.log("\nAssets are ready for bundling. Next build will include them.\n"); console.log(
"\nAssets are ready for bundling. Next build will include them.\n",
);
process.exit(0); process.exit(0);
} catch (error) { } catch (error) {
console.error("\n❌ Asset setup failed:", error.message); console.error("\n❌ Asset setup failed:", error.message);

View File

@@ -9,7 +9,10 @@ import type { LocalAudioTrack } from "livekit-client";
import { combineLatest } from "rxjs"; import { combineLatest } from "rxjs";
import { logger } from "matrix-js-sdk/lib/logger"; import { logger } from "matrix-js-sdk/lib/logger";
import { noiseSuppressionEnabled, noiseSuppressionLevel } from "../settings/settings"; import {
noiseSuppressionEnabled,
noiseSuppressionLevel,
} from "../settings/settings";
import { getUrlParams } from "../UrlParams"; import { getUrlParams } from "../UrlParams";
import type { Behavior } from "../state/Behavior"; import type { Behavior } from "../state/Behavior";
import type { ObservableScope } from "../state/ObservableScope"; import type { ObservableScope } from "../state/ObservableScope";
@@ -78,7 +81,9 @@ export const audioTrackNoiseSuppressionSync = (
const processor = transformer.getProcessor(); const processor = transformer.getProcessor();
if (!processor) { if (!processor) {
logger.error("[audioTrackNoiseSuppressionSync] Processor not initialized"); logger.error(
"[audioTrackNoiseSuppressionSync] Processor not initialized",
);
return; return;
} }
@@ -103,7 +108,9 @@ export const audioTrackNoiseSuppressionSync = (
}); });
} else { } else {
// Track was removed - stop processor if applicable // Track was removed - stop processor if applicable
logger.debug("[audioTrackNoiseSuppressionSync] Audio track not available"); logger.debug(
"[audioTrackNoiseSuppressionSync] Audio track not available",
);
} }
} catch (error) { } catch (error) {
logger.error("[audioTrackNoiseSuppressionSync] Error:", error); logger.error("[audioTrackNoiseSuppressionSync] Error:", error);

View File

@@ -7,7 +7,10 @@ Please see LICENSE in the repository root for full details.
import { useEffect, useRef } from "react"; import { useEffect, useRef } from "react";
import { noiseSuppressionEnabled, noiseSuppressionLevel } from "../settings/settings"; import {
noiseSuppressionEnabled,
noiseSuppressionLevel,
} from "../settings/settings";
import { useBehavior } from "../useBehavior"; import { useBehavior } from "../useBehavior";
import { NoiseSuppressionTransformer } from "../livekit/NoiseSuppressionTransformer"; import { NoiseSuppressionTransformer } from "../livekit/NoiseSuppressionTransformer";
@@ -16,42 +19,43 @@ import { NoiseSuppressionTransformer } from "../livekit/NoiseSuppressionTransfor
* Synchronizes the transformer with the noise suppression settings. * Synchronizes the transformer with the noise suppression settings.
* Returns the transformer instance for use in Publishers. * Returns the transformer instance for use in Publishers.
*/ */
export const useNoiseSuppressionTransformer = (): NoiseSuppressionTransformer => { export const useNoiseSuppressionTransformer =
const transformerRef = useRef<NoiseSuppressionTransformer | null>(null); (): NoiseSuppressionTransformer => {
const enabledValue = useBehavior(noiseSuppressionEnabled.value$); const transformerRef = useRef<NoiseSuppressionTransformer | null>(null);
const levelValue = useBehavior(noiseSuppressionLevel.value$); const enabledValue = useBehavior(noiseSuppressionEnabled.value$);
const levelValue = useBehavior(noiseSuppressionLevel.value$);
// Initialize transformer on first mount // Initialize transformer on first mount
useEffect(() => { useEffect(() => {
if (!transformerRef.current) { if (!transformerRef.current) {
transformerRef.current = new NoiseSuppressionTransformer(); transformerRef.current = new NoiseSuppressionTransformer();
// Initialize with current settings // Initialize with current settings
void transformerRef.current.initialize(levelValue, enabledValue); void transformerRef.current.initialize(levelValue, enabledValue);
}
}, []);
// Sync enabled state when setting changes
useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setEnabled(enabledValue);
}
}, [enabledValue]);
// Sync level when setting changes
useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setSuppressionLevel(levelValue);
}
}, [levelValue]);
// Cleanup on unmount
useEffect(() => {
return () => {
if (transformerRef.current) {
transformerRef.current.destroy();
} }
}; }, []);
}, []);
return transformerRef.current!; // Sync enabled state when setting changes
}; useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setEnabled(enabledValue);
}
}, [enabledValue]);
// Sync level when setting changes
useEffect(() => {
if (transformerRef.current) {
transformerRef.current.setSuppressionLevel(levelValue);
}
}, [levelValue]);
// Cleanup on unmount
useEffect(() => {
return () => {
if (transformerRef.current) {
transformerRef.current.destroy();
}
};
}, []);
return transformerRef.current!;
};

View File

@@ -426,7 +426,10 @@ export class Publisher {
room: LivekitRoom, room: LivekitRoom,
): void { ): void {
const track$ = scope.behavior( const track$ = scope.behavior(
observeTrackReference$(room.localParticipant, Track.Source.Microphone).pipe( observeTrackReference$(
room.localParticipant,
Track.Source.Microphone,
).pipe(
map((trackRef) => { map((trackRef) => {
const track = trackRef?.publication.track; const track = trackRef?.publication.track;
return track instanceof LocalAudioTrack ? track : null; return track instanceof LocalAudioTrack ? track : null;

View File

@@ -104,7 +104,8 @@ export default ({
proxy: { proxy: {
// Proxy for DeepFilterNet3 assets to avoid CORS issues during development // Proxy for DeepFilterNet3 assets to avoid CORS issues during development
"/assets/deepfilternet3": { "/assets/deepfilternet3": {
target: "https://cdn.mezon.ai/AI/models/datas/noise_suppression/deepfilternet3", target:
"https://cdn.mezon.ai/AI/models/datas/noise_suppression/deepfilternet3",
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/assets\/deepfilternet3/, ""), rewrite: (path) => path.replace(/^\/assets\/deepfilternet3/, ""),
secure: false, // Allow self-signed certs in development secure: false, // Allow self-signed certs in development