NLP(自然语言处理)入门简介
自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。
自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。
自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
—— 摘自《百度百科》
自然语言处理(英语:Natural Language Processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;
自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。
自然语言认知和理解是让电脑把输入的语言变成有意思的符号和关系,然后根据目的再处理。自然语言生成系统则是把计算机数据转化为自然语言。
—— 摘自《维基百科》
尽管上述两条摘抄中有一些描述或许不那么含义明确,但这也不妨碍我们能够通过这个描述给 NLP 在自己的脑海中定义一个形象。 比如,我的理解就是:
NLP 就是让计算机能理解人的语言,并对具体的语言指令能做出“正确”的响应。
为了加深对 NLP 的理解,那么来看看 NLP 都用在了哪些地方。
就一般情况来看,目前 NLP 的应用主要分布在以下领域:
- 机器翻译
- 自动摘要
- 观点提取
- 文本分类
- 问题回答
- 语音识别
- TTS(Text To Speech)
本文则是从 语音识别 + 机器翻译 + TTS(视情况可有可无) 的组合场景出发,探索一下语音翻译的可行性研究和技术调研。
语音翻译
既然 NLP 可以让计算机拥有可以理解人类语言的能力。那么从广义上讲,通过计算机将人类的语言转换成某种预期的输出都算是语音翻译。
当然,狭义上的理解也就是我们平时最常接触到的人类语言之间的相互转换。
为什么需要语音翻译
OK,在回答这个问题前,我们把自己带入如下场景,想象一下可能遇到的问题:
- 观看视频(其他语言的视频)
- 讨论(有不同语言的讨论者)
- 会议(跨国会议)
- 学习(外教的课)
- 变声(男声变女声/女声变男声/变正太音/变萝莉音)
上面的场景中,我们会很容易会因为语言不通而造成很多困难,所以我们迫切地需要一个翻译的存在来帮助我们。
除过上面的场景,我们设想一下:
是不是可以通过某种方式,让人可以听懂狗狗的叫声,同时让人声的指定可以翻译成狗狗可以听懂的声音(人与狗的听力范围和发声频率不完全相同)。
如果真的可以这样,那警犬是不是就可以成为战士合作更默契的战友了。
总之,假如能有一种方式可以将语言翻译成另一种有用的形式,那就会极大地消除某种障碍,从而带来巨量收益。这便是语音翻译存在的意义!
一些比较流行的语音翻译产品
三人行必有我师焉。
机器翻译从诞生到现在,中间经历了很多次的革新,每一次都将翻译的水准提升了一步。近一次的革新,则是伴随着 人工智能 的发展而发展。
所以,如果从零开始来做一个可以达到目前主流语音翻译产品平均水平的产品,那么无疑是一个需要巨量资源的工程。
一般情况下,如果是非企业战略级的规划,就不考虑自研了。
我们来探索下目前市场主流的产品都有哪些,来学学如何使用他们。
单应用产品
- 网易有道词典(APP) - 即时翻译
- 网易翻译官(APP) - 即时翻译
- 同声传译王(APP) - 即时翻译
- 录音识别王(APP) - 语音识别,语音翻译
- 腾讯翻译君(APP) - 即时翻译
- 钉钉闪记(PC) - 视频字幕识别,即时翻译,识别不同角色说话内容并支持导出
- 网易见外(Web 站点) - 视频文字识别,视频语音翻译(非实时),翻译导出
- 猎豹移动-小豹翻译棒(硬件产品)
- 网易有道翻译王(硬件产品)
- 科大讯飞翻译机(硬件产品)
- 米家词典笔(硬件产品)
- ……
一句话:该类产品数不胜数!
提供扩展功能的应用
- Google Youtube 实时字幕生成,实时翻译
- B站视频字幕自动生成
- Google Chrome 视频实时字幕(本地视频播放,仅支持英文)
- 油猴翻译插件、字幕插件等
- 微信读书的听书功能
产品功能形态
基于当前市面上可以提供语音翻译功能的产品形态,当前总结如下:
- 移动端,独立APP
- PC客户端,独立应用
- Web站点
- 插件/扩展功能
- 独立硬件
企业级翻译服务(SaSS)供应商
当前提供实时翻译的主流语音翻译解决方案供应商有下面几个:
- Google翻译
- Microsoft Translator
- 百度翻译
- iFlytek(讯飞)翻译
- 网易有道
- 阿里巴巴
- 腾讯
这些解决方案都依靠先进的语音识别和机器翻译技术,能够实现语音输入的实时翻译,为用户提供便捷的跨语言交流体验。
如何构建我自己的语音翻译应用程序?
语音翻译的底层实现通常涉及以下几个关键技术:
- 语音识别(Automatic Speech Recognition,ASR):语音识别技术将语音信号转换为文本。它使用声学模型和语言模型来识别和解码语音输入,将其转化为可理解的文本形式。
- 机器翻译(Machine Translation,MT):机器翻译技术将源语言文本翻译成目标语言文本。它使用统计机器翻译或神经网络翻译等方法,基于大规模的双语数据和翻译模型进行翻译。
- 语言理解和处理(Natural Language Understanding and Processing):语言理解和处理技术用于解析和理解文本的含义和结构。它包括词法分析、句法分析、语义分析等技术,以便更好地理解和处理翻译后的文本。
- 文本合成(Text-to-Speech,TTS):文本合成技术将文本转换为语音输出。它使用语音合成模型和声音库,将翻译后的文本转化为可听的语音。
这些技术通常结合在一起,构成了语音翻译系统的底层实现。语音输入经过语音识别转化为文本,然后通过机器翻译进行翻译,再经过语言理解和处理进行进一步处理,最后通过文本合成转化为语音输出。这些技术的发展和进步为语音翻译提供了更准确、流畅和自然的体验。
科大讯飞的翻译解决方案技术原理如下,仅供参考:
服务供应商解决方案
- 百度
- Microsoft(Azure)
- Amazon(AWS)
- Amazon Transcribe 语音转换为文本
- Amazon Translate 机器翻译
- 有道
- 科大讯飞
- 阿里巴巴
- 腾讯
开源解决方案
飞桨-PaddleSpeech(Star:8.4K)
PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型。
PaddleSpeech 是使用 Python
语言编写的项目,开源协议使用 Apache-2.0 许可
,对象语言仅适用中文和英文
项目支持的功能大致如下:
- 中英文语音识别
- 语音翻译(英译中)
- 语音合成(TTS)
- 支持流式ASR(语音识别)和流式TTS
- 以及声音分类、声纹提取、标点恢复的高级功能
HanLP-Han Language Processing(Star:30K)
面向生产环境的多语种自然语言处理工具包,基于 PyTorch 和 TensorFlow 2.x 双引擎,目标是普及落地最前沿的 NLP 技术。HanLP 具备功能完善、精度准确、性能高效、语料时新、架构清晰、可自定义的特点。
借助世界上最大的多语种语料库,HanLP2.1 支持包括简繁中英日俄法德在内的 130 种语言上的 10 种联合任务以及多种单任务。HanLP 预训练了十几种任务上的数十个模型并且正在持续迭代语料库与模型。
HanLP 提供 RESTful 和 native 两种 API,分别面向轻量级和海量级两种场景。无论何种 API 何种语言,HanLP 接口在语义上保持一致,在代码上坚持开源。
海量级 native API,依赖 PyTorch、TensorFlow 等深度学习技术,适合专业 NLP 工程师、研究者以及本地海量数据场景。要求Python 3.6至3.10,支持 Windows,推荐 *nix。可以在 CPU 上运行,推荐 GPU/TPU。
不同于那些虚假宣传的学术论文或商业项目,HanLP保证所有结果可复现。如果你有任何质疑,我们将当作最高优先级的致命性bug第一时间排查问题。 ---- 项目 Readme 官宣
抱抱脸-transformers(Star:110K)
🤗 Transformers 提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用。
🤗 Transformers 提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。同时,每个定义的 Python 模块均完全独立,方便修改和快速研究实验。
🤗 Transformers 支持三个最热门的深度学习库: Jax, PyTorch 以及 TensorFlow — 并与之无缝整合。你可以直接使用一个框架训练你的模型然后用另一个加载和推理。
抱抱脸的 transformers 同样使用 Python
语言,以及 Apache-2.0
开源协议。 此项目是一个可以说是一个 NLP 领域的集大成者,截至文章成稿,此项目支持的模型架构多达219个。
因此,通过这个项目几乎可以入手所有 NLP 领域的问题处理和研究。但也正是因为支持众多的模型架构,所以这个项目的代码并没有打磨,没有进行额外的抽象封装。它更适合研究人员快速迭代魔改。
OpenAI
这里为什么要把 OpenAI 单独拿出来呢?原因就是 ChatGPT 太火了,它目标表现出来的能力和潜力都是巨大的。
当然,ChatGPT 仅仅是 OpenAI 公司的一个产品。 我们从这个产品上就可以知道 OpenAI 公司的技术实力,那么 OpenAI 有没有语音翻译的产品?
通过查询 OpenAI 文档,并没有发现一款语音翻译的产品。但是 OpenAI 是拥有 Speech to text 方案的,它支持包含中文在内的 98 种语言。
语言识别生成文字后,再配合 GPT-4 的功能加持,这种组合可以几乎完成目前 NLP 领域的所有需求。
但有一点遗憾的是,语音转换并不是实时的。它支持最大 25MB 的语音文件转换,可以是 mp3 格式,并且 API 调用简单,比如下面的例子:
1 | from pydub import AudioSegment |
不过,这对于熟悉音频或者流媒体的同学来说,应该问题不大。但对于本人而言,将麦克风或者扬声器的声音捕获并可以在适当的时机截断后生成音频文件还是有挑战的。
PS:OpenAI 其实有一个语言翻译接口,但是它的目标语言是英语,并且不可修改。所以上面的介绍就简单地忽略掉了。感兴趣可以查看:OpenAI - API REFERENCE - Audio - Crate translation
我们应该如何选择
在不考虑从零开始构建自有 NLP 生态的前提下。我们可以根据实际需求来选择成熟的供应商服务,或者选择多供应商产品进行二次开发。
当然,如果选择二次开发,也可以引进一些开源协议比较友好的开源项目,降低成本。
总的来说,各种选择都有优缺点,我们可以从以下几个方面来思考如何选择合适的方式来构建我们的 即时翻译 应用。
成熟的即时翻译产品
- 翻译配套功能完善
- 不用考虑技术细节
- 方便,拿来即用
- 定制化改造空间小,和其他系统整合困难
- 语音内容会上传到第三方
- 成本根据使用情况线性增长
半开发成品组合(识别+翻译)
- 定制化改造空间大,可自定义开发
- 某种程度上可避免语音上传到第三方
- 开发成本上升
- 开发难度不可知
- 音频获取(麦克风/扬声器)、转码(格式/字节序)等
- 音频断句问题
- 即时翻译延迟控制
- 成本在前期开发完成后趋于慢性增长
完全开发模式
- 开发难度最大,前期成本投入最高
- 定制化空间最高
- 开发的成品可商业性盈利
- 非公司战略导向没必要投入
供应商优势对比
语音识别 | 文本翻译 | 语音翻译 | 即时翻译 | 其他 | |
---|---|---|---|---|---|
百度 | O | O | O | O | 语音翻译仅支持中英互译 |
微软 | O | O | O | 支持实时语音转文本 | |
AWS | O | O | |||
有道 | O | O | O | O | |
阿里巴巴 | O | O | 支持私有云部署,语音翻译的场景为字幕翻译和视频导出 | ||
科大讯飞 | O | O | O | O | 支持私有云部署 |
腾讯 | O | O | O | 对英语外的其他语种支持度不高 |
国内外优势对比
优点 | 缺点 | |
---|---|---|
国内 | 对中文识别度高 没有网络限制的问题 无数据出境风险 |
某些产品不支持英语以外的其他外语 |
国外 | 对语言支持丰富 翻译质量相对较高 |
对中文识别度相对较低 部分产品有网络方面的限制 需要考虑是否涉及数据出境 |
数据出境安全评估办法,第二条,数据处理者向境外提供在中华人民共和国境内运营中收集和产生的重要数据和个人信息的安全评估,适用本办法。法律、行政法规另有规定的,依照其规定。
—— 摘自《数据出境安全评估办法》中华人民共和国中央人民政府网站
最后
综合分析,如果在前期试点,并且在司内信息安全合规的情况下。投入成本最低,见效最快的方式就是:
直接使用手机APP的即时翻译软件,参与到需要即时翻译的场景中来。在使用过程中不断地收集使用反馈,作为后期方案决策的依据。
另外一个方案,就是整合司内已有资源并结合业界成熟产品,并立项开发。这种方案相对于直接使用手机APP的情况,糟糕的地方就在于:
处于试点期,并且在需求收集不完善的情况下投入开发成本,是一个不太明智的决定(但凡事也有例外,需要综合评定)。
参考:
- 百度百科-NLP
- 维基百科-NLP
- 百度大脑*AI开放平台
- 微软*语音服务文档
- AWS
- 有道智云*AI开放平台
- 讯飞开放平台
- 阿里云
- 腾讯云
- 数据出境安全评估办法
- OpenAI platform
- OpenAI Document
- OpenAI API REFERENCE
欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !