Python简单语音识别
- 1
一:
1:安装pyaudio,speech库
2:直接上代码,首先简单的文本转语音
import speech #调用speech库
speech.say('请选择:1.转换文字,2.转换文本,3.退出')
#speech.say是固用语法,它可以调用你的麦克风,并且说出括号内的内容
n=int(input('请选择:1.转换文字,2.转换文本,3.退出'))
#这里是一个输入,input获取你输入的内容,并将其转化为int类型,将它赋值给n(n没有任何意义)
while True:#循环
if n==1:
speech.say("请输入:")#同上
str = input("请输入:")#同上
speech.say("你输入的内容是: ")#同上
speech.say(str)#调用麦克风说出你输入的内容
if n==2:
speech.say('请输入文本名')#同上
n1=input('请输入文本名')#同上
fd = open(n1, encoding="utf-8").read()#打开该文本,并读取
speech.say(fd)#同上
if n==3:
speech.say('您已退出')#如你所见,break了
break
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
3:直接上代码,简单的语音转文本
import speech_recognition as sr #不说了,也知道是啥意思吧
r = sr.Recognizer() #调用识别器
test = sr.AudioFile("I:\\pycham\\PyCharm 2020.2.3\\语音识别\\程序文件\\Oldboy.wav") #导入语音文件
with test as source:
audio = r.record(source)
type(audio) #看一下类型不用管
c=r.recognize_sphinx(audio, language='zh-cn')
#识别输出,调用中文,这里需要下载中文包,speech_recognition里没有中文
print(c)
print(d)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
4.代码代码,自己给自己录音
import wave
from pyaudio import PyAudio,paInt16
framerate=8000#看下面
NUM_SAMPLES=2000#看下面
channels=1#看下面
sampwidth=2#看下面
TIME=2#看下面
def save_wave_file(filename,data):#自定义函数
'''save the date to the wavfile'''
wf=wave.open(filename,'wb')#打开一个wav文件,没有则创建
wf.setnchannels(channels)#声道数,不会吧,难道真的有人不知道声道数是什么意思
wf.setsampwidth(sampwidth)#采样字节 1 or 2
wf.setframerate(framerate) #采样频率 8000 or 16000
wf.writeframes(b"".join(data))#写进去
wf.close()#关了,不关就一直开着了
def my_record():
pa=PyAudio()#调用,然后换个名字,嗯,虽然有点不一样,但差不多就是这个意思
stream=pa.open(format = paInt16,
channels=1,
rate=framerate,
input=True,
frames_per_buffer=NUM_SAMPLES)#底层的缓存的块的大小,不写也可以,改成(frames_per_buffer=frames_per_buffer)就可以了
my_buf=[]
count=0
while count<TIME*10:#控制录音时间(2*10,打印20个.差不多emmmm好几秒吧)
string_audio_data = stream.read(NUM_SAMPLES)
my_buf.append(string_audio_data)
count+=1#别告诉我你看不懂
print('.')
save_wave_file('01.wav',my_buf)#调用,传参
stream.close()#关了
chunk=2014
def play():
wf=wave.open(r"01.wav",'rb')#读写
p=PyAudio()
stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),#打开
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
while True:
data=wf.readframes(chunk)
if data=="":
break#不管,前面要是没问题,就不会用到这个
stream.write(data)#写入
stream.close()#关了
p.terminate()#还记得前面的pyaudio吗,没错,调用这个库,然后播放01.wav,总要检查一下到底录没录下来嘛
if __name__ == '__main__':
my_record()
print('Over!')
play()#调用自定义函数,运行顺序1.my_record 2.save_wave_file 3.play
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
5.终于,整合一下前面的代码,自己录音识别自己,其实很简单,直接from *** import ***,不过再此之前得把播放的那一段删了,也就是上面的自定义函数play()
from 程序文件.录音2 import my_record#是不是很方便,直接调用,下面不说了,之前都说过了
import speech_recognition as sr
my_record()
r = sr.Recognizer() #调用识别器
test = sr.AudioFile("I:\\pycham\\PyCharm 2020.2.3\\语音识别\\程序文件\\01.wav") #导入语音文件
with test as source:
audio = r.record(source)
d=type(audio)
c=r.recognize_sphinx(audio, language='zh-cn') #识别输出
print(c)
print(d)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11