diff --git a/content/posts/ai/audio-ASR-TTS.md b/content/posts/ai/audio-ASR-TTS.md new file mode 100644 index 0000000..a762cce --- /dev/null +++ b/content/posts/ai/audio-ASR-TTS.md @@ -0,0 +1,131 @@ ++++ +draft = false +date = 2024-11-28T12:02:09+08:00 +title = "AI 声音:数字音频、语音识别、TTS 简介与使用示例" +description = "AI 声音:数字音频、语音识别、TTS 简介与使用示例" +slug = "" +authors = [] +tags = ["AI"] +categories = ["AI"] +externalLink = "" +series = [] +disableComments = true ++++ + +在现代 AI 技术的推动下,声音处理领域取得了巨大进展。从语音识别(`ASR`)到文本转语音(`TTS`),再到个性化声音克隆,这些技术已经深入到我们的日常生活中:语音助手、自动字幕生成、语音导航等应用无处不在。 + +## 数字音频 + +音频是声音的“数字化”。声音本质上是空气中振动的波,这些波的振动被麦克风捕捉后转化为电信号。接着,这些信号会通过采样和量化存储为数字数据。 + +![](https://raw.githubusercontent.com/RifeWang/images/master/ai/AI-analog-to-audio.drawio.png) + +如上图所示。声波最开始是一个连续的模拟信号,然后经过特定频率的采样得到采样点(比如采样频率 48kHz 就是将每秒切割为 48k 个采样点),再通过量化处理得到二进制数据(如果量化位数是 16 位,则表示每个采样点存储为 16 bit 即 2 个字节),最后将元数据(如采样率、量化位数、声道数量等)和采样点二进制数据组合起来就得到了音频文件(比如 WAV 或 MP3)。 + + +## ASR 语音识别 + +语音识别(`Automatic Speech Recognition`,`ASR`)是将语言转化为文字的技术。 + +#### 传统方法 + +早期的 `ASR` 系统主要依赖基于统计的模型,如: +- 声学模型(Acoustic Model):将音频信号转换为声学特征,如 MFCC(梅尔频率倒谱系数)。 +- 语言模型(Language Model):使用统计方法预测文字序列的概率。 +- 解码器(Decoder):结合声学和语言模型,将声学特征映射到最可能的文字序列。 + +这些方法需要大量手工设计的特征和规则,性能受限于数据量和语言模型的复杂度。 + +#### 深度学习 + +现代 `ASR` 系统主要基于深度学习,使用端到端(End-to-End)方法,直接从音频输入到文本输出。 + +如果将 AI 模型看作一个黑盒,那么训练过程就是输入 <音频, 文本> 数据对,让模型自动学习输入和输出之间的映射关系。经过训练后,模型便可以对新的音频进行推理,生成对应文本。 + +这种描述是一个高度抽象的视角,背后实际上是一个复杂的过程,比如 `OpenAI Whisper`: + +![](https://raw.githubusercontent.com/RifeWang/images/master/ai/openai-whisper.png) + +实践证明,基于深度学习方法训练出来的模型具有更好的鲁棒性、准确性和泛化能力。 + +`OpenAI Whisper` 使用示例: +```python +import whisper + +# 加载模型,默认存储位置 ~/.cache/whisper,可以设置 download_root 改变路径 +model = whisper.load_model("base", download_root="root_dir") + +# 将音频转换为文本 +result = model.transcribe("audio.mp3") +print(result["text"]) +``` + +你也可以使用 `whisper.cpp`,一个使用 C/C++ 编写的 `OpenAI Whisper` 的高性能版本。 + + +## TTS 文本转语言 + +文本转语音(`Text-to-Speech`,`TTS`)技术则是将输入文本转化为自然流畅的语音。 + +从某种抽象的角度来看,`TTS`(文本转语音)可以被视为语音识别(`ASR`)的“反过程”,两者都涉及将一种形式的数据(音频或文本)映射到另一种形式,并且现代都采用深度学习模型,通常基于 `Transformer` 或类似架构,但在某些技术实现(比如中间表示、损失函数、特征表示、目标优化等)和复杂度上并非完全对称。 + +`TTS` 示例如下(使用的是 `HuggingFace` 上的 `OuteAI/OuteTTS-0.2-500M` 模型): + +```python +import outetts + +model_config = outetts.HFModelConfig_v1( + model_path="OuteAI/OuteTTS-0.2-500M", + language="en", # Supported languages in v0.2: en, zh, ja, ko +) + +interface = outetts.InterfaceHF(model_version="0.2", cfg=model_config) + +# Optional: Load speaker from default presets +interface.print_default_speakers() +speaker = interface.load_default_speaker(name="male_1") + +output = interface.generate( + text="""Speech synthesis is the artificial production of human speech. + A computer system used for this purpose is called a speech synthesizer, + and it can be implemented in software or hardware products. + """, + # Lower temperature values may result in a more stable tone, + # while higher values can introduce varied and expressive speech + temperature=0.1, + repetition_penalty=1.1, + max_length=4096, + speaker=speaker, +) + +output.save("output.wav") +``` + +#### 声音克隆 + +每个人的声音都有独特的特性,比如音调高低、响度、停顿、语气等等,声音克隆就是分析并提取一个人的声音特征,将这些特征参数化(通常表示为高维向量)。特征提取本身没有多大实际用途,为了让这些特征发挥作用,声音克隆通常与 `TTS`(文本转语音)技术结合,融合克隆的声音特征,将文本生成为与克隆声音相似的语音。 + +不少 `TTS` 模型也会直接支持声音克隆的功能,如何调用则取决于具体的模型。例如上例中的 `OuteAI/OuteTTS-0.2-500M` 模型可以输入一段音频创建具有该音频特征的 speaker: + +```python +# Optional: Create a speaker profile (use a 10-15 second audio clip) +speaker = interface.create_speaker( + audio_path="path/to/audio/file", + transcript="Transcription of the audio file." +) +``` + +## 总结 + +语音技术作为 `AI` 应用中的重要分支,正在改变人机交互的方式。从基础的数字音频处理到 `ASR` 和 `TTS` 技术的成熟,再到声音克隆赋予 `AI` 个性化表达能力,这些技术不仅满足了自动化需求,还为虚拟助手、娱乐、医疗、教育等领域带来了创新可能性。希望本文的介绍能为你打开探索 AI 声音领域的大门! + +--- + +(我是凌虚,关注我,无广告,专注技术,不煽动情绪,欢迎与我交流) + +--- + +参考资料: + +- *https://github.com/openai/whisper* +- *https://huggingface.co/OuteAI/OuteTTS-0.2-500M* \ No newline at end of file diff --git a/content/resume/resume.md b/content/resume/resume.md index b364641..7d0cdfb 100644 --- a/content/resume/resume.md +++ b/content/resume/resume.md @@ -19,13 +19,14 @@ disableComments = true |:---- |:---- |:-------- |:------------ |:---------------- | | 男 | 本科 | 1993年 | 187-7296-4832 | rifewang@gmail.com | -主导过的互联网 SaaS 项目处理**日均千万级** PV 流量、管理**数十亿**图片。 +主导过的互联网 SaaS 项目处理**日均千万级** PV 流量、管理**数十亿**图片资源。 负责研发的脑科学云平台及医疗器械项目服务于几十家头部医院、科研机构和诊所。 -具备丰富的技术广度,涵盖 **后端**、**云原生**、**大数据** 等多项技术领域,拥有 **系统架构设计师**、**Kubernetes**、**ElasticSearch** 等官方技术认证。 +丰富的技术广度,拥有 **系统架构设计师**、**Kubernetes**、**ElasticSearch** 等官方技术认证,涵盖 **后端**、**容器与云原生**、**搜索**、**大数据** 等多项技术领域。 职场表现卓越,每一段生涯都能做出优秀成绩,曾获:**年度优秀个人**、**年度创新团队** 等荣誉。 坚持运动、学习、写作 8 年,公众号:[系统架构师Go](https://raw.githubusercontent.com/RifeWang/images/master/qrcode.jpg),技术社区 Segmentfault 2022、2023 年度 Maintainer。 +在掘金创作有:[Kubernetes 云原生](https://juejin.cn/column/7314642642869403682)、[AI 人工智能](https://juejin.cn/column/7425885062921928738)、[ELK 搜索与大数据](https://juejin.cn/column/7314860085930180623) 等多个专栏。 ## 工作经历 @@ -41,12 +42,11 @@ disableComments = true 项目成绩:定制化的多模态阅片产品成功交付某部战区总医院;科研云平台支撑了多次大规模临床试验及日常科研;疗法云软件投入商业化运作并持续迭代。 个人职责: -- Team Leader,实施 Scrum 敏捷开发,协调团队成员工作,组织产品的上线发版。 -- 优化研发流程,组织 code review,关注团队成员的发展,结合公司发展方向组织对团队成员的技术培训。 +- Team Leader,实施 Scrum 敏捷开发,组织 code review,协调团队成员工作,安排产品的上线发版。 - 架构设计和演化,包含技术选型、制定架构演进方案、组织技术评审、追踪并确保技术落地。 - 日常编码实现业务需求,包括 RESTful API、MySQL 建模、Redis 缓存、MQ 消息队列、S3/Minio 对象存储、NAS/Ceph 文件存储、Serverless 集成、Puppeteer 无头浏览器截图,以及医学影像处理系统和算法集成。 -- 构建 Prometheus、Grafana 可观测性系统,采集日志、追踪、指标,搭建数据报表与可视化数据分析大屏。 - 系统优化,深入整体架构、业务流、数据流、各组件等多角度优化系统,保障系统的高性能、可扩展、高质量。 +- 构建 Prometheus、Grafana 可观测性系统,采集日志、追踪、指标,搭建数据报表与可视化数据分析大屏。 - 实施 DevOps 和云原生,负责 Kubernetes 基础设施、Argo-workflows 任务编排引擎、 Terraform IaC、以及等其它云原生工具。