当前位置: 首页 > article >正文

python开发一款翻译工具

最近某水果手机厂在万众期待中开了一场没有发布万众期待的手机产品的发布会发布了除手机外的其他一些产品也包括最新的水果14系统。几天后更新了系统的吃瓜群众经过把玩突然发现新系统里一个超有意思的功能——翻译比如这种奇怪的翻译知识增加了相比常见的翻译工具同声翻译工具更具有实用价值想想不精通其他语言就能和歪果朋友无障碍交流的场景真是一件美事不如自己动手实现个工具备用!一个同声翻译工具逻辑大概可以是先识别而后翻译翻译能否成功识别的准确率是个关键因素。为了降低难度我决定分两次完成工具开发。首先来实现试试语音识别的部分。轻车熟路本次的demo继续调用有道智云API实现实时语音识别。效果展示先看看界面和结果哈可以选择多种语音这里只写了四种常见的偶分别测试的中文、韩文、英文。看着还不错哦~调用API接口的准备工作首先是需要在有道智云的个人页面上创建实例、创建应用、绑定应用和实例获取调用接口用到的应用的id和密钥。具体个人注册的过程和应用创建过程详见文章分享一次批量文件翻译的开发过程开发过程详细介绍下面介绍具体的代码开发过程。首先是根据实时语音识别文档来分析接口的输入输出。接口设计的目的是对连续音频流的实时识别转换成文本信息并返对应文字流因此通信采用websocket调用过程分为认证、实时通信两阶段。在认证阶段需发送以下参数参数类型必填说明示例appKeyString是已申请的应用IDIDsaltString是UUIDUUIDcurtimeString是时间戳秒TimeStampsignString是加密数字签名。sha256signTypeString是数字签名类型v4langTypeString是语言选择参考支持语言列表zh-CHSformatString是音频格式支持wavwavchannelString是声道支持1单声道1versionString是api版本v1rateString是采样率16000签名sign生成方法如下signTypev4signsha256(应用IDsaltcurtime应用密钥)。认证之后就进入了实时通信阶段发送音频流获取识别结果最后发送结束标志结束通信这里需要注意的是发送的音频最好是16bit位深的单声道、16k采样率的清晰的wav音频文件这里我开发时最开始因为音频录制设备有问题导致音频效果极差接口一直返回错误码304手动捂脸。Demo开发这个demo使用python3开发包括maindow.pyaudioandprocess.pyrecobynetease.py三个文件。界面部分使用python自带的tkinter库来进行语言选择、录音开始、录音停止并识别的操作。audioandprocess.py实现了录音、音频处理的逻辑最后通过recobynetease.py中的方法来调用实时语音识别API。1.界面部分主要元素123456789101112131415161718192021222324roottk.Tk()root.title(netease youdao translation test)frmtk.Frame(root)frm.grid(padx80, pady80)# label1tk.Label(frm,text选择待翻译文件)# label1.grid(row0,column0)labeltk.Label(frm,text选择语言类型)label.grid(row0,column0)comboxttk.Combobox(frm,textvariabletk.StringVar(),width38)combox[value]lang_type_dictcombox.current(0)combox.bind(ComboboxSelected,get_lang_type)combox.grid(row0,column1)btn_start_rectk.Button(frm, text开始录音, commandstart_rec)btn_start_rec.grid(row2, column0)lb_Statustk.Label(frm, textReady, anchorw, fggreen)lb_Status.grid(row2,column1)btn_suretk.Button(frm,text结束并识别,commandget_result)btn_sure.grid(row3,column0)root.mainloop()2.音频录制部分引入pyaudio库需通过pip安装来调用音频设备录制接口要求的wav文件并通过wave库存储文件123456789101112131415161718192021222324252627282930313233343536373839404142def__init__(self, audio_path, language_type,is_recording):self.audio_pathaudio_path,self.audio_file_nameself.language_typelanguage_type,self.languagelanguage_dict[language_type]print(language_dict[language_type])self.is_recordingis_recordingself.audio_chunk_size1600self.audio_channels1self.audio_formatpyaudio.paInt16self.audio_rate16000defrecord_and_save(self):self.is_recordingTrue# self.audio_file_nameself.audio_path/recordtmp.wavself.audio_file_name/recordtmp.wavthreading.Thread(targetself.record,args(self.audio_file_name,)).start()defrecord(self,file_name):print(file_name)ppyaudio.PyAudio()streamp.open(formatself.audio_format,channelsself.audio_channels,rateself.audio_rate,inputTrue,frames_per_bufferself.audio_chunk_size)wfwave.open(file_name,wb)wf.setnchannels(self.audio_channels)wf.setsampwidth(p.get_sample_size(self.audio_format))wf.setframerate(self.audio_rate)# 读取数据写入文件whileself.is_recording:datastream.read(self.audio_chunk_size)wf.writeframes(data)wf.close()stream.stop_stream()stream.close()p.terminate()3.翻译接口调用部分1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465defrecognise(filepath,language_type):globalfile_pathfile_pathfilepathnoncestr(uuid.uuid1())curtimestr(int(time.time()))signStrapp_keynoncecurtimeapp_secretprint(signStr)signencrypt(signStr)uriwss://openapi.youdao.com/stream_asropenapi?appKeyapp_keysaltnoncecurtimecurtime\signsignversionv1channel1formatwavsignTypev4rate16000langTypelanguage_typeprint(uri)start(uri,1600)defencrypt(signStr):hashhashlib.sha256()hash.update(signStr.encode(utf-8))returnhash.hexdigest()defon_message(ws, message):resultjson.loads(message)try:resultmessage1result[result][0]resultmessage2resultmessage1[st][sentence]print(resultmessage2)exceptException as e:print()defon_error(ws, error):print(error)defon_close(ws):print(### closed ###)defon_open(ws):count0file_objectopen(file_path,rb)whileTrue:chunk_datafile_object.read(1600)ws.send(chunk_data, websocket.ABNF.OPCODE_BINARY)time.sleep(0.05)countcount1ifnotchunk_data:breakprint(count)ws.send({\end\: \true\}, websocket.ABNF.OPCODE_BINARY)defstart(uri,step):websocket.enableTrace(True)wswebsocket.WebSocketApp(uri,on_messageon_message,on_erroron_error,on_closeon_close)ws.on_openon_openws.run_forever()总结有道智云提供的接口一如既往的好用这次开发主要的精力全都浪费在了由于我自己录制的音频质量差而识别失败的问题上音频质量ok后识别结果准确无误下一步就是拿去翻译了有了有道智云API实现实时翻译也可以如此简单

相关文章:

python开发一款翻译工具

最近,某水果手机厂在万众期待中开了一场没有发布万众期待的手机产品的发布会,发布了除手机外的其他一些产品,也包括最新的水果14系统。几天后,更新了系统的吃瓜群众经过把玩突然发现新系统里一个超有意思的功能——翻译&#xff0…...

2026届必备的五大AI辅助论文助手解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 智能化写作辅助工具一键论文生成器,能按照用户所输入的标题或者关键词&#xff0…...

AGI游戏智能落地失败率高达67%?SITS2026专家团复盘11个真实项目,提炼出2个关键决策阈值与1个不可逆拐点

第一章:SITS2026分享:AGI与游戏智能 2026奇点智能技术大会(https://ml-summit.org) AGI在游戏环境中的验证价值 通用人工智能(AGI)并非仅面向抽象推理任务,游戏世界正成为其核心验证场域。开放世界RPG、实时策略与多…...

AGI与机器人结合不是“加法”,而是“范式熔断”——SITS2026提出全新评估矩阵(含6维动态权重算法)

第一章:AGI与机器人结合不是“加法”,而是“范式熔断” 2026奇点智能技术大会(https://ml-summit.org) 当通用人工智能(AGI)不再仅运行于云端沙盒或语言模型API中,而是实时驱动机械臂完成非结构化厨房操作、自主重规…...

VibeVoice Pro流式语音效果展示:超长文本10分钟连续输出无卡顿实录

VibeVoice Pro流式语音效果展示:超长文本10分钟连续输出无卡顿实录 1. 引言:重新定义实时语音生成的边界 当你需要将大段文字转换成语音时,最头疼的是什么?是漫长的等待时间,还是听到一半突然卡顿的尴尬?…...

QT账号注册踩坑实录:密码要求太奇葩?邮箱验证卡住了?一篇帮你全搞定

QT账号注册全流程避坑指南:从密码设置到邮箱验证的实战解析 第一次接触QT开发环境的新手们,往往会在注册环节遇到各种意想不到的障碍。我清楚地记得自己当初注册QT账号时,反复尝试了五次密码才符合要求,邮箱验证邮件等了半小时都…...

AGI用户研究黄金三角模型(SITS2026首次发布|含实时仿真沙盒访问权限)

第一章:AGI用户研究黄金三角模型(SITS2026首次发布|含实时仿真沙盒访问权限) 2026奇点智能技术大会(https://ml-summit.org) AGI用户研究黄金三角模型(SITS2026)是面向通用人工智能人机协同范式演进提出的…...

ESP32开发环境搭建:手把手教你搞定Python依赖报错(ESP-IDF 4.x/5.x通用)

ESP32开发环境搭建:手把手教你搞定Python依赖报错(ESP-IDF 4.x/5.x通用) 第一次接触ESP32开发时,看到终端里突然跳出一堆红色报错信息,那种手足无措的感觉我至今记忆犹新。特别是当错误提示"The following Python…...

【AGI环境监测革命】:3大颠覆性应用、7类实时预警场景与2025碳中和落地路径

第一章:AGI驱动的环境监测范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 传统环境监测长期受限于传感器密度、数据孤岛与响应滞后性,而具备自主推理、多模态融合与跨域协同能力的通用人工智能(AGI)正从根本上重构这一技…...

nanobot 源码解析(五):Skills 系统——让 AI 秒变专家

认识Pass层级结构 Pass范围从上到下一共分为5个层级: 模块层级:单个.ll或.bc文件 调用图层级:函数调用的关系。 函数层级:单个函数。 基本块层级:单个代码块。例如C语言中{}括起来的最小代码。 指令层级:单…...

SketchUp STL插件技术解析:3D打印工作流效率提升85%的架构设计与实现方案

SketchUp STL插件技术解析:3D打印工作流效率提升85%的架构设计与实现方案 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-s…...

从『红色警报』到现实网络:聊聊关键节点失效与系统鲁棒性(附Python模拟代码)

关键节点失效与系统鲁棒性:从理论到Python实战 想象一下,当你正在享受流畅的在线视频会议时,突然某个核心服务器宕机,整个系统陷入瘫痪。这种场景不仅出现在战争电影中,更是现代分布式系统每天面临的真实挑战。关键节点…...

你的百度网盘下载为什么这么慢?秘密武器在这里!

你的百度网盘下载为什么这么慢?秘密武器在这里! 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经面对百度网盘的下载界面,看着那缓…...

实测AI读脸术镜像:WebUI界面,上传图片即得分析结果

实测AI读脸术镜像:WebUI界面,上传图片即得分析结果 1. 镜像核心功能与特点 1.1 一键式人脸属性分析 这款AI读脸术镜像最突出的特点就是它的易用性。只需通过简单的Web界面,上传一张包含人脸的图片,系统就能自动完成以下分析&am…...

生产环境如何安全兼容从备份中提取单表数据_跨版本数据恢复方案

...

C++ Protobuf实现接口参数自动校验详解

用C做业务发开的同学是否还在不厌其烦的编写大量if-else模块来做接口参数校验呢?当接口字段数量多大几十个,这样的参数校验代码都能多达上百行,甚至超过了接口业务逻辑的代码体量,而且随着业务迭代,接口增加了新的字段…...

mysql如何快速判断两个数据库结构差异_使用mysqldiff工具.txt

动画系统必须用模板参数控制类型&#xff0c;支持Animation<vec4>和Animation<quat>共享插值逻辑与生命周期管理&#xff0c;要求类型提供static lerp或特化基础路径&#xff0c;播放状态与采样解耦&#xff0c;关键帧用连续内存存储&#xff0c;组合靠BlendAnimat…...

智能访客系统(线上访客预约、线下访客机),提供从访客预约、身份核验、现场登记到联动(闸机、门禁、梯控、车牌识别停车场等出入口)通行的一站式智能化管理解决方案,实现访客全程可追溯、通行更便捷、管理更高效

智能访客系统技术方案第一章 系统概述1.1 项目背景随着智慧楼宇、智慧园区、智慧社区建设的深入推进&#xff0c;传统的访客管理模式已难以满足现代安全管理与高效通行的双重需求。传统人工登记方式存在效率低、数据易丢失、安全隐患大等问题。本方案基于智能访客系统&#xff…...

c++ Protobuf解决数据传输瓶颈面试精讲

1. 什么是 Protobuf?Protobuf&#xff08;Protocol Buffers&#xff09; 是一种轻量级的数据序列化协议&#xff0c;由 Google 开发。它可以用于结构化数据的序列化和反序列化&#xff0c;使得数据在不同系统之间进行传输和存储更加高效。与 XML 和 JSON 等常见的数据交换格式…...

UEFI Setup界面开发避坑指南:grayoutif、suppressif条件控制与varstore变量存储的实战解析

UEFI Setup界面开发避坑指南&#xff1a;条件控制与变量存储的实战解析 在UEFI固件开发中&#xff0c;Setup界面作为用户与系统交互的重要桥梁&#xff0c;其开发质量直接影响用户体验和系统稳定性。本文将深入探讨如何避免UEFI Setup界面开发中的常见陷阱&#xff0c;特别是条…...

软件估算-代码行估算法

代码行技术是比较简单的定量估算软件规模的方法。这种方法根据以往开发的类似产品的经验和历史数据&#xff0c;估算实现一个功能需求的源程序行数。当有以往开发类似项目的历史数据可供参考时&#xff0c;用此方法估算出的历史数据还是比较准确的&#xff0c;把实现每个功能需…...

别再只背课文了!用《新概念英语》Lesson 39的‘鲁莽司机’故事,带你理解软件开发的‘风险无视’陷阱

从《新概念英语》Lesson 39看技术决策中的风险盲区&#xff1a;当工程师变成"鲁莽司机" Bruce的故事在技术圈里每天都在重演——那个对油表报警视若无睹、对路面裂缝毫不在意的司机&#xff0c;像极了我们身边那些对系统告警置之不理、对技术债视而不见的开发团队。当…...

软件规模-功能点分析法

功能点分析法是在20世纪70年代中期由IBM委托 Allan Albrecht 工程师和他的同事为解决代码行度量法所产生的问题和局限性而研究发布&#xff0c;发表于1979年&#xff0c;随后被国际功能点用户协会继承。该方法基于应用软件的外部&#xff0c;内部特性以及软件性能进行一系列间接…...

别再只盯着协议了!手把手教你用示波器实测MIPI D-PHY的HS/LP模式切换波形

示波器实战&#xff1a;深度解析MIPI D-PHY模式切换的波形捕获技巧 当你在调试一块搭载MIPI接口的摄像头模组时&#xff0c;是否遇到过图像传输不稳定、画面闪烁甚至完全无信号的问题&#xff1f;这些现象往往与D-PHY在高速模式(HS)和低功耗模式(LP)之间的切换时序异常有关。本…...

别再只用散点图了!用matplotlib的plt.contourf()给你的机器学习模型画个‘势力范围’

用等高线图解锁机器学习模型的决策奥秘 在机器学习的世界里&#xff0c;模型往往被视为一个"黑箱"——输入数据&#xff0c;输出结果&#xff0c;中间发生了什么却难以直观理解。这种不透明性让很多从业者感到困扰&#xff0c;尤其是在向非技术背景的利益相关者解释模…...

Claude Opus 4.7 来了,但普通人真正缺的不是新模型,是一个会选模型的入口

这不是一篇“谁最强”的测评。模型越更越快&#xff0c;真正稀缺的反而是比较能力。最近几天&#xff0c;如果你一直在看 AI&#xff0c;很容易被一种热闹裹挟&#xff1a;Anthropic 在推 Claude Opus 4.7&#xff0c;OpenAI 连着更新 Agents SDK 和 Codex&#xff0c;Google 也…...

从数据清洗到模型部署:一个完整VGG16乳腺超声分类项目的避坑指南与优化思考

从数据清洗到模型部署&#xff1a;VGG16乳腺超声分类全流程实战精要 医学影像分析正经历着从传统人工判读到AI辅助诊断的范式转移。当我们聚焦于乳腺癌筛查这一关键领域时&#xff0c;超声图像分类任务因其非侵入性和普及性优势&#xff0c;成为计算机视觉技术落地医疗的重要突…...

从“面包重量”到“用户停留时长”:产品经理/运营必懂的CDF与PDF实战解读

从“面包重量”到“用户停留时长”&#xff1a;产品经理/运营必懂的CDF与PDF实战解读 想象你走进一家面包店&#xff0c;发现每个面包的重量都有些微差异——有的重152克&#xff0c;有的148克&#xff0c;几乎没有恰好150克的。这种连续变量的特性&#xff0c;恰恰是理解用户行…...

从理论到实践:一维与二维水污染扩散模型的在线模拟与代码实现

1. 水污染扩散模型的基础原理 第一次接触水污染扩散模型时&#xff0c;我也被那些专业术语搞得一头雾水。后来在实际项目中反复应用才发现&#xff0c;理解这些原理其实就像理解咖啡在杯子里扩散一样简单。想象一下&#xff0c;当你把一勺糖倒入咖啡中&#xff0c;糖分是如何逐…...

【AGI决策能力评估权威框架】:2024全球7大实验室实测数据+3层可验证指标体系首次公开

第一章&#xff1a;AGI的规划与决策能力评估 2026奇点智能技术大会(https://ml-summit.org) AGI的规划与决策能力并非单一维度指标&#xff0c;而是融合目标分解、状态建模、多步推理、反事实评估与实时适应的复合认知过程。当前主流评估框架已从静态任务准确率转向动态环境下…...