Les meilleurs développeurs mobile freelances sont sur Codeur.com

Réduction d'echo sur une application expo react-native

 Fermé · 500 € à 1 000 € · 12 offres · 2585 vues · 11 interactions


nous avons une application de chatbot vocal utilisant expo-speech-recognition pour la reconnaissance vocale.
la reduction d'echo fonctionne sur android mais pas sur ios..

chatgpt propose la solution suivante

je suis sidéré qu'IOS demande autant d'effort alors que ça fonctionne facilement sans sortir d'expo sous android.
je te soupçonne d'avoir oublié un detail tout bete qui permettrait une solution beaucoup plus simple
ChatGPT a dit :

En réalité, il n’existe pas de « switch magique » dans Expo ou react-native-voice qui permette, en mode Managed, de conserver votre AVAudioSession « voiceChat + voiceProcessingEnabled » : dès que le wrapper STT (expo-speech-recognition ou RN-Voice) démarre, il réapplique sa propre configuration « record-only » et écrase la vôtre.
Solution la plus simple sans passer par un service tiers

Plutôt que de réécrire tout un pipeline STT, vous pouvez faire un petit patch natif sur le module que vous utilisez :

Éjectez (ou au minimum passez en Bare) pour avoir accès au code iOS natif.

Installez et configurez patch-package :

yarn add patch-package postinstall-postinstall

Ajoutez dans votre package.json :

"scripts": {
"postinstall": "patch-package"
}

Localisez le fichier iOS du wrapper STT :

Pour expo-speech-recognition : node_modules/expo-speech-recognition/ios/EXSpeechRecognition.m

Pour react-native-voice : node_modules/react-native-voice/ios/RNVoice.m

Commentez ou neutralisez les appels à

[[AVAudioSession sharedInstance] setCategory:…];
[[AVAudioSession sharedInstance] setMode:…];

qui sont exécutés au démarrage de la reconnaissance.

Réappliquez votre configuration voiceChat + voiceProcessingEnabled juste après, en collant par exemple dans la même méthode :

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord
mode:AVAudioSessionModeVoiceChat
options:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionAllowBluetooth
error:nil];
if ([session [Email visible pour les membres Pro]:)]) {
[session setVoiceProcessingEnable:YES error:nil];
}

Générez le patch :

npx patch-package expo-speech-recognition
# ou
npx patch-package react-native-voice

Commitez votre dossier patches/ : à chaque yarn install, le patch sera appliqué automatiquement.

Pourquoi c’est plus simple

Vous conservez tout le code JS d’expo-speech-recognition ou de react-native-voice (pas de réécriture STT).

Vous n’avez pas besoin de monter votre propre serveur ni d’intégrer un service tiers pour la synthèse.

L’effort se limite à quelques lignes de patch natif, versionnées dans votre repo.

Là, votre AVAudioSession ne sera jamais réinitialisée en mode « record-only », et l’AEC/NS/AGC iOS restera active pendant toute la reconnaissance vocale.

Budget indicatif : 500 € à 1 000 €

Publication : 17 mai 2025 à 16h03

Profils recherchés : Développeur mobile freelance , Développeur iOS freelance , Développeur Android freelance , Monteur vidéo freelance , Développeur React freelance

Le profil du client est reservé aux prestataires abonnés

Créer un compte

12 freelances ont répondu à ce projet

11 propositions de devis en moins de 2h

Mirai-Tech Agence développement spécifique
Kévin  Guiot Développeur full-stack
EncureIT_Systems Agence IA
Jayan Grondin Développeur web
Roger_Clanget Agence de développement mobile
minuitagency Agence de développement mobile
Fabien Déchery Agence développement spécifique
+5

Montant moyen des devis proposés : 550 €

Estimation du délai : 3 jours

Publier un projet similaire

Chaque jour, des centaines de clients utilisent Codeur.com pour trouver un prestataire. Créez votre compte dès maintenant, remplissez votre profil et trouvez de nouveaux clients.

Trouver des nouveaux clients