我的项目需要
- 在命令行窗口运行;
- 程序运行时,会让你输出一句英语,而后你须要对着麦克风读出这句英语;
- 程序会判断你读的对不对,如果不对会让你重读,直到读对为止;
- 应用百度云语音辨认:https://ai.baidu.com/tech/spe...
Python编程知识点
- while循环
- 用户输出字符串
- 字符串小写
- 条件判断
- 自定义函数
- 异样解决
- SpeechRecognition 模块 (装置:
pip install SpeechRecognition
) - pyaudio 模块 (装置:
pip install pyaudio
) - baidu-aip 模块(装置:
pip install baidu-aip
)
参考代码
import speech_recognition as srfrom aip import AipSpeech# 请本人注册百度云语音辨认:https://ai.baidu.com/tech/speech/asrVOICE_APP_ID = 'YOUR_ASR_APP_ID'VOICE_API_KEY = 'YOUR_ASR_APP_KEY'VOICE_SECRET_KEY = 'YOUR_ASR_SECRET_KEY'voice_client = AipSpeech(VOICE_APP_ID, VOICE_API_KEY, VOICE_SECRET_KEY)# 百度云语音辨认def asr(audio_data): wav_data = audio_data.get_wav_data( convert_rate=16000, convert_width=2 ) res = voice_client.asr(wav_data, 'wav', 16000, { 'dev_pid': 1737, }) if res['err_no'] == 0: return ''.join(res['result']) else: return ''def recognize_speech_from_mic(recognizer, microphone): ''' 麦克风录音并转文字 `microphone`. :param recognizer: 语音识别器 :param microphone: 麦克风 :return: `None` 如果辨认失败返回None,否则返回语音文字 ''' print('开始朗诵') # 录音并去除乐音 with microphone as source: recognizer.adjust_for_ambient_noise(source) audio = recognizer.listen(source) # 应用百度云语音辨认 try: text = asr(audio) except Exception as e: print(e) text = None return textif __name__ == '__main__': # 输出 text = input('请输出一句英语: ').strip() # 创立语音识别器和麦克风 recognizer = sr.Recognizer() microphone = sr.Microphone() # 录音并获取文字 speech_text = recognize_speech_from_mic(recognizer, microphone) while speech_text != None and text.lower() != speech_text.lower(): print('{} ×'.format(speech_text)) speech_text = recognize_speech_from_mic(recognizer, microphone) if speech_text: print('{} {}'.format(speech_text, '✓')) else: print('语音辨认服务暂不可用,请稍后再试。')
运行测试
- 应用
pip install requirements.txt
装置模块: pyaudio
,SpeechRecognition
,baidu-aip
- 运行
python 5.py