基于百度翻译的英语翻译python脚本
本帖最后由 fouck 于 2019-2-25 18:15 编辑学习python有差不多两个多月了,玩语音也有一小段时间了,是时候分享以下战果了。
今天公司来了一个外国人,是美国人,叽里呱啦说了一大通,除了一些名词能听得懂其他都听不懂,突然想要是有实时翻译就好了,去网上查了价格,果断放弃。
我想要是我也能做一个就好了,说干就干,查了以下大佬们的方法,觉得还是python好用,于是乎,写了个脚本呢,结果还行,基本满足要求。
思路是:录音→识别→翻译;
第一步:录音,用的模块模块是wave,以及pyaudio(涉及声音基本都用它),这里直接给代码,自己琢磨其中的奥妙,代码很简单的,基本有c基础的都看得懂。
import wave
from pyaudio import PyAudio,paInt16
framerate=16000
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')
wf.setnchannels(channels)
wf.setsampwidth(sampwidth)
wf.setframerate(framerate)
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)
my_buf=[]
count=0
while count<TIME*15:#控制录音时间
string_audio_data = stream.read(NUM_SAMPLES)
my_buf.append(string_audio_data)
count+=1
print('.')
save_wave_file(r'F:\Users\01.wav',my_buf)
stream.close()
if __name__ == '__main__':
my_record()
print('Over!')
第二步:识别,用百度云语音,这个也很简单,论坛一大把,这也直接上代码,想必各位小可爱,机灵鬼都能看得懂。
from aip import AipSpeech
APP_ID = 'xxx'
API_KEY = 'xxx'
SECRET_KEY = 'xxx'
aipSpeech = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
try:
t = aipSpeech.asr(get_file_content(r'C:\Users\lixinghao\Desktop\awake.wav'),
'wav', 16000, { 'lan': 'zh',})
print (t['result'])
except:
print ("error ,pass")
是不是很简单,谁都能看得懂。
第三步,翻译,用百度翻译。
import requests
import string
import time
api_url = "http://api.fanyi.baidu.com/api/trans/vip/translate"
my_appid = '20151113000005349'
cyber = 'osubCEzlGjzvw8qdQc41'
lower_case = list(string.ascii_lowercase)
def requests_for_dst(word): #翻译
salt = str(time.time())[:10]
final_sign = str(my_appid)+word+salt+cyber
final_sign = hashlib.md5(final_sign.encode("utf-8")).hexdigest() #区别en,zh构造请求参数
if list(word) in lower_case:
paramas = {
'q':word,
'from':'en',
'to':'zh',
'appid':'%s'%my_appid,
'salt':'%s'%salt,
'sign':'%s'%final_sign
}
my_url = api_url+'?appid='+str(my_appid)+'&q='+word+'&from='+'en'+'&to='+'zh'+'&salt='+salt+'&sign='+final_sign
else:
paramas = {
'q':word,
'from':'zh',
'to':'en',
'appid':'%s'%my_appid,
'salt':'%s'%salt,
'sign':'%s'%final_sign
}
my_url = api_url+'?appid='+str(my_appid)+'&q='+word+'&from='+'zh'+'&to='+'en'+'&salt='+salt+'&sign='+final_sign
response = requests.get(api_url,params = paramas).content
content = str(response,encoding = "utf-8")
json_reads = json.loads(content)
print(json_reads['trans_result']['dst'])
if __name__ == '__main__':
s=input()
requests_for_dst(s)
第四步:组合,代码太长了,就不放了,放在附件里,想要就下载。
各位大佬各位乡亲父老,多多批评指出。
页:
[1]