fix(voice): make stereo microphones work in studio and custom (#2852)

This commit is contained in:
Hampus
2026-09-20 00:19:53 +02:00
committed by GitHub
parent a3454e8245
commit 487febac8e
52 changed files with 105 additions and 138 deletions
@@ -79,7 +79,6 @@ function createAssignment(
guild_overrides: [],
enabled_backends: [...VOICE_NOISE_SUPPRESSION_BACKENDS],
allow_user_override: false,
stereo_enabled: false,
suppression_strength: 80,
...overrides,
};
@@ -180,7 +179,6 @@ describe('resolveVoiceNoiseSuppressionAssignment', () => {
const config = createConfig({
enabled: true,
allow_user_override: true,
stereo_enabled: true,
rollout_basis_points: 10000,
excluded_user_ids: [TARGETED_USER_ID],
guild_overrides: [{guild_id: GUILD_ID, backend: 'rnnoise'}],
@@ -189,7 +187,6 @@ describe('resolveVoiceNoiseSuppressionAssignment', () => {
expect(assignment.guild_overrides).toEqual([]);
expect(assignment.enabled_backends).toEqual([]);
expect(assignment.allow_user_override).toBe(false);
expect(assignment.stereo_enabled).toBe(false);
});
test('allowlist gives source user_rule outside the canary', () => {
@@ -404,14 +401,12 @@ describe('resolveVoiceNoiseSuppressionForCall', () => {
const assignment = createAssignment({
backend: 'rnnoise',
source: 'user_rule',
stereo_enabled: true,
suppression_strength: 42,
config_version: 19,
});
expect(resolveVoiceNoiseSuppressionForCall(assignment, null, null)).toEqual({
backend: 'rnnoise',
source: 'user_rule',
stereoEnabled: true,
suppressionStrength: 42,
configVersion: 19,
});
@@ -41,7 +41,6 @@ const voiceConfigFields = {
included_user_ids: TargetedUserIdsSchema,
excluded_user_ids: TargetedUserIdsSchema,
guild_overrides: z.array(VoiceNoiseSuppressionGuildOverrideSchema).max(VOICE_NOISE_SUPPRESSION_MAX_GUILD_OVERRIDES),
stereo_enabled: z.boolean(),
suppression_strength: z.number().int().min(0).max(100),
};
@@ -56,7 +55,6 @@ export const VoiceNoiseSuppressionConfigSchema = z.object({
included_user_ids: voiceConfigFields.included_user_ids.default([]),
excluded_user_ids: voiceConfigFields.excluded_user_ids.default([]),
guild_overrides: voiceConfigFields.guild_overrides.default([]),
stereo_enabled: voiceConfigFields.stereo_enabled.default(false),
suppression_strength: voiceConfigFields.suppression_strength.default(80),
});
@@ -89,7 +87,6 @@ export const VoiceNoiseSuppressionAssignmentResponse = z.object({
guild_overrides: z.array(VoiceNoiseSuppressionGuildOverrideSchema),
enabled_backends: z.array(VoiceNoiseSuppressionBackendSchema),
allow_user_override: voiceConfigFields.allow_user_override,
stereo_enabled: voiceConfigFields.stereo_enabled,
suppression_strength: voiceConfigFields.suppression_strength,
});
@@ -104,7 +101,6 @@ export const INERT_VOICE_NOISE_SUPPRESSION_ASSIGNMENT: VoiceNoiseSuppressionAssi
guild_overrides: [],
enabled_backends: [],
allow_user_override: false,
stereo_enabled: false,
suppression_strength: DEFAULT_VOICE_NOISE_SUPPRESSION_CONFIG.suppression_strength,
};
@@ -123,7 +119,6 @@ export function resolveVoiceNoiseSuppressionAssignment(
config_version: config.config_version,
enabled_backends: [...config.enabled_backends],
allow_user_override: config.allow_user_override,
stereo_enabled: config.stereo_enabled,
suppression_strength: config.suppression_strength,
};
if (config.excluded_user_ids.includes(userId)) {
@@ -131,7 +126,6 @@ export function resolveVoiceNoiseSuppressionAssignment(
...shared,
enabled_backends: [],
allow_user_override: false,
stereo_enabled: false,
user_targeted: false,
backend: null,
source: null,
@@ -173,7 +167,6 @@ export type VoiceNoiseSuppressionResolutionSource = (typeof VOICE_NOISE_SUPPRESS
export interface VoiceNoiseSuppressionResolution {
backend: VoiceNoiseSuppressionBackend;
source: VoiceNoiseSuppressionResolutionSource;
stereoEnabled: boolean;
suppressionStrength: number;
configVersion: number;
}
@@ -204,7 +197,6 @@ export function resolveVoiceNoiseSuppressionForCall(
const targeted = resolveVoiceNoiseSuppressionTarget(assignment, guildId);
if (targeted == null) return null;
const shared = {
stereoEnabled: assignment.stereo_enabled,
suppressionStrength: assignment.suppression_strength,
configVersion: assignment.config_version,
};