我同时使用react-native-voice和expo-speech库来转录我的声音,并将文本转换为语音。问题是,当我结束注册我的声音并使用expo-voice开始一个语音时,没有声音。似乎当语音录制结束时,react-native-voice完全静音。但我必须按下麦克风按钮(激活语音识别)才能听到它。
我发现让所有东西一起工作的唯一方法是在文本到语音转换结束后**停止语音录制。下面是代码的一部分:
const startRecognizing = async () => {
setButtonColor('#38b000');
// Starts listening for speech for a specific locale
try {
await Voice.start('en-EN');
} catch (e) {
console.error(e);
}
};
const destroyRecognizer = async () => {
//Destroys the current SpeechRecognizer instance
try {
await Voice.destroy();
} catch (e) {
console.error(e);
}
};
const stopRecognizing = async () => {
setButtonColor('#344E41');
setTimeout(() => {
Speech.speak("I did not understand, can you repeat please ?", {
language: 'en-EN',
onDone: () => {
setTimeout(
async() => {
await destroyRecognizer();
}, 1000);
},
});
}, 1000);
};
return (
<View style={styles.microphoneButtonContainer}>
<TouchableOpacity
onPressIn={startRecognizing}
onPressOut={stopRecognizing}>
<Image
style={styles.microphoneButton}
source={require('../img/microphone-icon.png')}
/>
</TouchableOpacity>
</View>
);
这个解决方案带来了很多问题,所以我不能用它。没有一个方法来停止记录解决这个问题。我没有找到任何帮助,在图书馆的文档。有解决这个问题的方法吗?谢谢你的帮助!
1条答案
按热度按时间8oomwypt1#
因为react-native-voice方法无法解决这个问题,所以我想如果可以修改原生代码,就直接在库中搜索。对于ios,代码在ios/voice/Voice. m中。
所以我试着注解掉
[self resetAudioSession];
,然后用npx-pod-install(我用cocoapod)重建包,结果成功了!这样做可能会导致edgecases,我还没有完全测试的方法,我也没有尝试为android。