Les meilleurs développeurs mobile freelances sont sur Codeur.com
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
12 freelances ont répondu à ce projet
11 propositions de devis en moins de 2h
Montant moyen des devis proposés : 550 €
Estimation du délai : 3 jours