Mysql 事务(标贝科技)


欢迎体验标贝科技AI开放平台 https://ai.data-baker.com/#/?source=qwer12

事务

InnoDB对ACID的支持

特性说明InnoDB支持
原子性一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样autocommit,commit,rollcack
一致性在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。(比如:A向B转账,不可能A扣了钱,B却没有收到)双InnoDB写缓冲区,“双写缓冲区”,InnoDB崩溃恢复
隔离性数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。(例:A正在从一张银行卡里面取钱,在A取钱的过程中,B不能向这张银行卡打钱)事务隔离级别
持久性(涉及硬件选购)事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失双InnoDB写缓冲区,“双写缓冲区”(innodb_flush_log_at_trx_commit 变量。(例如sync_binlog变量,innodb_file_per_table 变量),存储设备中的写入缓冲区(例如磁盘驱动器、SSD 或 RAID 阵列,存储设备中的电池后备缓存。用于运行 MySQL 的操作系统,特别是它对fsync()系统调用的支持)

隔离级别

不同隔离级别下读读取数据可能出现的情况
脏读:一个事务处理过程里读取了另一个未提交的事务中的数据
不可重复读:一个事务在它运行期间,两次查找相同的表,出现了不同的数据
幻读:在一个事务中读取到了别的事务插入的数据,导致前后不一致
串行化:既不允许脏读,也不允许不可重复读,并且还不允许幻读
隔离级别说明脏读不可重复读)幻读
未提交读(Read uncommitted)所有事务都可以看到没有提交事务的数据可能可能可能
已提交读(Read committed)事务成功提交后才可以被查询到不可能可能可能
可重复读(Repeatable read)同一个事务内多次查询却返回了不同的数据值不可能不可能可能
可串行化(Serializable )强制的进行排序,在每个读读数据行上添加共享锁不可能不可能不可能

隔离级别是在多个事务同时进行更改和执行查询时微调结果的性能、可靠性、一致性和可再现性之间的平衡的设置

不可重复读和幻读区别

(1)不可重复读是读取了其他事务更改的数据,针对update操作
解决:使用行级锁,锁定该行,事务A多次读取操作完成后才释放该锁,这个时候才允许其他事务更改刚才的数据

(2)幻读是读取了其他事务新增的数据,针对insert与delete操作
解决:使用间隙锁,表级锁,锁定整张表,事务A多次读取数据总量之后才释放该锁,这个时候才允许其他事务新增数据

幻读和不可重复读都是指的一个事务范围内的操作受到其他事务的影响了。只不过幻读是重点在插入和删除,不可重复读重点在修改

redo log (共享表空间)

innodb通过预写日志(force log at commit)机制实现事务的持久性

优点:日志顺序写速度远远大于数据页随机写磁盘

两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log)

redo log写入流程

请添加图片描述

redo log block

redo log以块为单位进行存储的,每个块占512字节。log buffer、redo log file中,都是这样以512字节的块存储的

redo log block包含4部分:

  • Ÿ log_block_hdr_no:(4字节)该日志块在redo log buffer中的位置ID
  • Ÿ log_block_hdr_data_len:(2字节)该log block中已记录的log大小。写满该log block时为0x200,表示512字节
  • Ÿ log_block_first_rec_group:(2字节)该log block中第一个log的开始偏移位置
  • Ÿ lock_block_checkpoint_no:(4字节)写入检查点信息的位置

relog block块头的第三部分 log_block_first_rec_group ,因为有时候一个数据页产生的日志量超出了一个日志块,这是需要用多个日志块来记录该页的相关日志。例如,某一数据页产生了552字节的日志量,那么需要占用两个日志块,第一个日志块占用492字节,第二个日志块需要占用60个字节,那么对于第二个日志块来说,它的第一个log的开始位置就是73字节(60+12)。如果该部分的值和 log_block_hdr_data_len 相等,则说明该log block中没有新开始的日志块,即表示该日志块用来延续前一个日志块

默认redolog由ib_logfile0、ib_logfile1组成,以追加写入的方式循环轮训写入。即先在第一个log file(即ib_logfile0)的尾部追加写,直到满了之后向第二个log file(即ib_logfile1)写。当第二个log file满了会清空一部分第一个log file继续写入

刷redo log策略:

1.发出commit动作时。commit发出后是否刷日志由变量 innodb_flush_log_at_trx_commit 控制

2.每秒刷一次。这个刷日志的频率由变量 innodb_flush_log_at_timeout 值决定,默认是1秒。要注意,这个刷日志频率和commit动作无关

3.当log buffer中已经使用的内存超过一半时

4.当有checkpoint时,checkpoint在一定程度上代表了刷到磁盘时日志所处的LSN位置

MySQL支持用户自定义在commit时如何将log buffer中的日志刷log file中。这种控制通过变量 innodb_flush_log_at_trx_commit 的值来决定。该变量有3种值:0、1、2,默认为1。

  • 当设置为1的时候,事务每次提交都会将log buffer中的日志写入os buffer并调用fsync()刷到log file on disk中。这种方式即使系统崩溃也不会丢失任何数据,但是因为每次提交都写入磁盘,IO的性能较差
  • 当设置为0的时候,事务提交时不会将log buffer中日志写入到os buffer,而是每秒写入os buffer并调用fsync()写入到log file on disk中。也就是说设置为0时是(大约)每秒刷新写入到磁盘中的,当系统崩溃,会丢失1秒钟的数据
  • 当设置为2的时候,每次提交都仅写入到os buffer,然后是每秒调用fsync()将os buffer中的日志写入到log file on disk

请添加图片描述

innodb存储引擎中checkpoint:

redolog日志太大怎么办?

解决问题:1、缩短数据库的恢复时间 2、缓冲池不够用时,将脏页刷新到磁盘 3、重做日志不可用时,刷新脏页

触发逻辑
  • sharp checkpoint:在重用redo log文件(例如切换日志文件)的时候,将所有已记录到redo log中对应的脏数据刷到磁盘
  • fuzzy checkpoint:一次只刷一小部分的日志到磁盘,而非将所有脏日志刷盘。有以下几种情况会触发该检查点:
    • master thread checkpoint:由master线程控制,每秒或每10秒刷入一定比例的脏页到磁盘
    • flush_lru_list checkpoint:从MySQL5.6开始可通过 innodb_page_cleaners 变量指定专门负责脏页刷盘的page cleaner线程的个数,该线程的目的是为了保证lru列表有可用的空闲页
    • async/sync flush checkpoint:同步刷盘还是异步刷盘。例如还有非常多的脏页没刷到磁盘(非常多是多少,有比例控制),这时候会选择同步刷到磁盘,但这很少出现;如果脏页不是很多,可以选择异步刷到磁盘,如果脏页很少,可以暂时不刷脏页到磁盘
    • dirty page too much checkpoint:脏页太多时强制触发检查点,目的是为了保证缓存有足够的空闲空间。too much的比例由变量 innodb_max_dirty_pages_pct 控制,MySQL 5.6默认的值为75,即当脏页占缓冲池的百分之75后,就强制刷一部分脏页到磁盘
解决问题
  • 当数据库发生宕机时,数据库不需要重做所有的日志,因为Checkpoint之前的页都已经刷新回磁盘。数据库只需对Checkpoint后的重做日志进行恢复,这样就大大缩短了恢复的时间
  • 当缓冲池不够用时,根据LRU算法会溢出最近最少使用的页,若此页为脏页,那么需要强制执行Checkpoint,将脏页也就是页的新版本刷回磁盘
  • 当重做日志出现不可用时,因为当前事务数据库系统对重做日志的设计都是循环使用的,并不是让其无限增大的,重做日志可以被重用的部分是指这些重做日志已经不再需要,当数据库发生宕机时,数据库恢复操作不需要这部分的重做日志,因此这部分就可以被覆盖重用。如果重做日志还需要使用,那么必须强制Checkpoint,将缓冲池中的页至少刷新到当前重做日志的位置
Log sequence number日志序列号

LSN称为日志的逻辑序列号(log sequence number),在innodb存储引擎中,lsn占用8个字节。LSN的值会随着日志的写入而逐渐增大

根据LSN,可以获取到几个有用的信息:

1.数据页的版本信息

2.写入的日志总量,通过LSN开始号码和结束号码可以计算出写入的日志量

3.可知道检查点的位置

实际上还可以获得很多隐式的信息

innodb从执行修改语句开始:

(1).首先修改内存中的数据页,并在数据页中记录LSN,暂且称之为data_in_buffer_lsn

(2).并且在修改数据页的同时(几乎是同时)向redo log in buffer中写入redo log,并记录下对应的LSN,暂且称之为redo_log_in_buffer_lsn

(3).写完buffer中的日志后,当触发了日志刷盘的几种规则时,会向redo log file on disk刷入重做日志,并在该文件中记下对应的LSN,暂且称之为redo_log_on_disk_lsn

(4).数据页不可能永远只停留在内存中,在某些情况下,会触发checkpoint来将内存中的脏页(数据脏页和日志脏页)刷到磁盘,所以会在本次checkpoint脏页刷盘结束时,在redo log中记录checkpoint的LSN位置,暂且称之为checkpoint_lsn

(5).要记录checkpoint所在位置很快,只需简单的设置一个标志即可,但是刷数据页并不一定很快,例如这一次checkpoint要刷入的数据页非常多。也就是说要刷入所有的数据页需要一定的时间来完成,中途刷入的每个数据页都会记下当前页所在的LSN,暂且称之为data_page_on_disk_lsn

undo log 日志(共享表空间)

当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录

作用:

  • 提供回滚
  • 多个行版本控制(MVCC)当读取的某一行被其他事务锁定时,它可以从undo log中分析出该行记录以前的数据是什么,从而提供该行版本信息,让用户实现非锁定一致性读取
记录日志的方式
  • insert操作记录delete操作,但是可能只是打delete flag标签,由最终的主线程完成
  • delete操作实际上不会直接删除,而是将delete对象打上delete flag,标记为删除,最终的删除操作是purge线程完成的
  • update分为两种情况:update的列是否是主键列
    • 如果不是主键列,在undo log中直接反向记录是如何update的。即update是直接进行的
    • 如果是主键列,update分两部执行:先删除该行,再插入一行目标行

<!–提交后的undolog不会立即删除,后续事务可能还需要基于mvcc读快照–>

参考文献
[1]https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_PROTOCOL.html
[2]https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_basic_packets.html#sect_protocol_basic_packets_packet
[3]https://www.jianshu.com/p/5e6b33d8945f
[4]https://cloud.tencent.com/developer/article/1768901
[5]https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_authentication_methods.html
[6]https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_command_phase.html
[7]https://dev.mysql.com/doc/internals/en/
[8]https://www.cnblogs.com/wyq178/p/11576065.html
[9]Mysql技术内幕:InnoDB存储引擎 (第2版). 姜承尧
[10]MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践. 周彦伟,王竹峰,强昌金
[11]https://dev.mysql.com/doc/refman/5.7/en/innodb-architecture.html
[12]https://dev.mysql.com/doc/refman/5.7/en/faqs-innodb-change-buffer.html

相关推荐

《SPARK官方教程系列》(标贝科技)

1-概述Apache Spark是一个用于大规模数据处理的统一分析引擎,它在Java、Scala、Python和R中的提供了高级api,以及一个支持通用执行图[general execution graphs]的优化引擎。它还支持一组丰富的高级工具,包括用于SQL和结构化数据处理的Spark SQL、用于机器学习的MLlib、用于图形处理的GraphX以及用于增量计算和流处理的结构化流。在Spark 2.0之前,Spark的主要编程接口是弹性分布式数据集(RDD)。在Spark 2.0之后,RDDs被D

DataBaker的博客 2863

uni-app多平台融合【入门】(标贝科技)

uni-app多平台融合【入门】一、uni-app介绍uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。二、功能框架从下面uni-app功能框架图可看出,uni-app在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力,真正做到海纳百川、各取所长。三、使用工具【推荐】HBuilderX 【官网下载地址:http

DataBaker的博客 2905

Elasticsearch相似度算分TF-IDF BM25(标贝科技)

控制相关度处理结构化数据(比如:时间、数字、字符串、枚举)的数据库,只需检查文档(或关系数据库里的行)是否与查询匹配。布尔的是/非匹配是全文搜索的基础,但不止如此,我们还要知道每个文档与查询的相关度,在全文搜索引擎中不仅需要找到匹配的文档,还需根据它们相关度的高低进行排序。全文相关的公式或 相似算法(similarity algorithms) 会将多个因素合并起来,为每个文档生成一个相关度评分 _score 。这里,我们会验证各种可变部分,然后讨论如何来控制它们。当然,相关度不只与全文查询有关,也

DataBaker的博客 2755

PHP各版本技术特性(标贝科技)

文章目录PHP8JIT流程配置测试小结match表达式PHP7HugepageHugepage简介Hugepage配置Opcache file cacheOpcache file cache简介Opcache file cache配置PHP5Opcache简介安装配置注意事项yield关键字总结PHP8JITPHP8 的 JIT( Just In Time )无疑是新特性中一大亮点, JIT 是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在 PH

DataBaker的博客 937

go-mysql-elasticsearch+mysql 同步 ElasticSearch(标贝科技)

一、Elasticsearch:https://www.elastic.co/downloads/past-releases1、Elasticsearch无需安装,解压即用。2、进入elasticsearch/bin目录,执行./elasticsearh即可启动。3、es 绑定了两个端口:9300:Java程序访问的端口9200:浏览器、postman访问的端口4、浏览器中访问:http://ip:9200 即可二、ik(分词) : https://github.com/medcl/el

DataBaker的博客 4179

白话Android音频系统原理(上)(标贝科技)

白话Android音频系统原理(上)一、基本原理二、初始化准备工作三、播放流程四、录音流程一、基本原理谁来发起(录音和播放)?AudioRecorder,AudioTrack。谁来处理(录音和播放)? AudioFlinger!怎么处理?AudioPolicyService !什么是output?为了便于管理, 把一个设备上具有相同参数的一组播放device组织称为一个output。它描述一些实际支持的设备(有实际硬件)一个output对应一个处理线程thread。二、初始化准备工作从f

DataBaker的博客 500

mysql 锁(标贝科技)

mysql 锁锁类型类型表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低这些存储引擎通过总是一次性同时获取所有需要的锁以及总是按相同的顺序获取表锁来避免死锁。表级锁更适合于以查询为主,并发用户少,只有少量按索引条件更新数据的应用,如Web 应用行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高最大程度的支持并发,同时也带来了最大的锁开销在 InnoDB 中,除单个 SQL 组成的事务外,锁是逐步获得的,

DataBaker的博客 2507

Docker概述(二)(标贝科技)

Docker概述(二)文章目录Docker概述(二)前言一、镜像构建与运行二、docker常用命令总结前言本文将介绍Docker镜像的构建、运行以及介绍docker的常用命令一、镜像构建与运行Dockerfile创建Dockerfile常用命令介绍这里以tomcat9.0为例首先下载一个tomcat9.0docker pull tomcat:9.0通常我们启动一个Tomcat容器,官方镜像是简化版的,在webapps 目录下没有任何内容,所有我们启动之后访问主页也是没有任

DataBaker的博客 861

postman安装使用教程(标贝科技)

postman安装使用教程文章目录postman安装使用教程前言一、postman安装二、postman使用前言postman是Chrome浏览器的插件,是一款功能强大的网页调试工具(接口调试神器)一、postman安装1.下载: https://www.postman.com/downloads/2. 安装双击postman应用程序进入到postman主界面,如下证明安装成功3. 界面主要功能介绍二、postman使用1. 状态码解释各位小伙伴可以学习一下关于接口

DataBaker的博客 2万+

srilm的安装与使用(标贝科技)

一、简介简单且概括的来说,SRILM是一个构建和应用统计语言模型的开源工具包,主要用于语音识别,统计标注和切分,以及机器翻译,可运行在UNIX及Windows平台上。(具体概念都能搜索出来,不再赘述,主讲安装和简单使用。)SRILM的主要目标是支持语言模型的估计和评测。二、安装在此,为解决大家下载版本不一致,导致安装出错的问题,提供压缩包下载链接,如下所示:SRILM:链接:https://pan.baidu.com/s/18T474NLSqlBL_xhMKEivnA提取码:adslTCL:链

DataBaker的博客 2270

GMM-HMM声学模型实例详解(标贝科技)

GMM-HMM声学模型实例详解GMM-HMM为经典的声学模型,基于深度神经网络的语音识别技术,其实就是神经网络代替了GMM来对HMM的观察概率进行建模,建模解码等识别流程的格个模块仍然沿用经典的语音识别技术接下来我将从GMM、最大似然估计到EM算法实例,再到最后使用一段语音介绍GMM-HMM声学模型参数更新过程一、GMM (混合高斯分布)1、正态分布(高斯分布)如果你绘制出来的概率分布是一条钟型曲线,且平均值、众数和中位数都是相等的,那么随机变量X就服从正态分布,记为X~N(μ,σ2),正态分布概

DataBaker的博客 4584

MySQL索引原理(标贝科技)

什么是索引?索引是帮助MySQL高效获取数据的数据结构。索引的本质就是数据结构。索引的目的在于提高查询效率,可以类比图书的目录,根据目录中的页码快速找到所需的内容。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。索引的优点和缺点优点1)索引可以提高数据检索的效率,降低数据库的IO成本2)索引可以将随机IO变成顺序IO3)索引可以帮助服务器避免排序和创建临时表缺点1)虽然索引提高了查询的速度,同时也降低了更新表的速度,比如对表进行INSERT、UPD

DataBaker的博客 757

基于AudioQueue实现音频的录制和播放(标贝科技)

基于AudioQueue实现音频的录制和播放文章目录基于AudioQueue实现音频的录制和播放背景总览Audio Queue 架构AudioQueueBuffer数据结构创建`AudioQueueBuffer`释放 `AudioQueueBuffer`Buffer Queue 和EnqueuingAudio Queue Callback音频录制创建一个录音 AudioQueue 的示例音频播放播放流程说明通过AudioQueue来控制音频的播放Audio Queue 的控制和状态Audio Queue

DataBaker的博客 923

pytorch模型从训练到LibTorch部署(标贝科技)

pytorch和libtorch安装PyTorch 是Torch7 团队开发的,从它的名字就可以看出,其与Torch 的不同之处在于PyTorch 使用了Python 作为开发语言。所谓“Python first”,同样说明它是一个以Python 优先的深度学习框架,不仅能够实现强大的GPU 加速,同时还支持动态神经网络,这是现在很多主流框架比如Tensorflow 等都不支持的。  PyTorch 既可以看做加入了GPU 支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络,除了F

DataBaker的博客 3454

Docker概述(一)(标贝科技)

docker系列文章(一)第一章docker概述与安装文章目录docker系列文章(一)前言一、docker概述二、使用步骤1.引入库2.读入数据总结前言此系列文章将详细介绍docker的原理及使用一、docker概述docker是什么?docker是目前使用最广泛的开源容器引擎,是一种操作系统级的虚拟化技术,一个简单的应用程序打包工具为什么要使用容器?上线流程繁琐 —> 资源利用率低 —> 程序扩容不及时 —> 服务器环境臃肿 —> 服务所需环境不

DataBaker的博客 1674

Mysql整体介绍(适用于5.X版本)(下)(标贝科技)

Mysql整体介绍(适用于5.X版本)(下)(标贝科技)二、InnoDB介绍[9-11]InnoDB是Mysql取得成功的最关键的引擎,其重要性不言而喻,下面将单独对该引擎的核心特性进行介绍,其他引擎如MyISAM、MEMORY、NDB等,本文不作说明。本文主要从宏观角度整体性地对InnoDB进行介绍,索引、事务、锁等具体的知识点在后续文章单独介绍。2.1 InnoDB体系架构和关键技术在MySQL 5.1中,可以支持两个版本的InnoDB,一个是静态编译的InnoDB版本,可将其视为老版本的In

DataBaker的博客 1315

免费公测 标贝声音理解,检测声音性别和年龄

古有听声辨位,今有听声“识”人。说到声音,其本质是不同频率声音的集合,以波的形式振动(震动)传播。由于每个人的发声器官(口腔、鼻腔、声带)各不相同,因此每个人的声音也不一样。因而,你的声音代表了个人很多关键信息,例如,性别、年龄、音色等特征。前几年,韩国大热的刑侦剧《Voice》里,女主是一个报警中心电话接听员,天生听力过人,不仅能听到很多常人听不到的细小微弱的声音,还能分辨出人讲话的声音、物体碰撞的声音、环境背景音等,靠着这个听声辨物的“超能力”,女主通过现场声音,准确的分辨人、物、地点,帮助组员破获了

DataBaker的博客 1117

Mysql整体介绍(适用于5.X版本)(上)(标贝科技)

Mysql整体介绍(适用于5.X版本)Mysql 8.X版本和 5.X版本相比,有比较大的调整。目前工作中应用最广的是Mysql 5.6/5.7的版本,所以文章将聚焦于对Mysql 5.6/5.7版本进行介绍,8.X版本的相关改动,有机会再单独整理。一、Mysql体系结构Mysql是一个单进程多线程、基于C/S架构的关系型数据库管理系统,其体系结构如图1所示(图片参考Mysql官方手册,各个版本会进行少许调整,总体上仍是准确的,虚线标出的查询缓存和缓冲区部分在Mysql 8.X版本中已废弃,侧面反映了

DataBaker的博客 1809

kaldi新手入门及语音识别的流程(标贝科技)

kaldi新手入门及语音识别的流程(标贝科技)欢迎体验标贝语音开放平台地址:https://ai.data-baker.com/#/?source=qaz123(注:填写邀请码hi25d7,每日免费调用量还可以翻倍)​​​​​​一、kaldikaldi简介Kaldi是当前最流行的开源的语音识别工具包,旨在提供灵活且可扩展的组件,包括多种语音信号处理,语音识别,声纹识别和深度神经网络。Kaldi的代码主要用C++编写,在此之上使用bash 和python脚本做了一些工具。kaldi安

DataBaker的博客 4158

教你windows下配置java环境变量&idea配置maven库(标贝科技)

安装java环境变量+idea配置maven库(标贝科技)提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录安装java环境变量+idea配置maven库(标贝科技)前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开

DataBaker的博客 677

WeNet 更新:超大规模数据 UIO,支持千万小时语音训练任务(转载自语音杂谈)

转载自语音杂谈 https://mp.weixin.qq.com/s/C6vVQ455g_fVNtRBb9pa7AWeNet 更新:超大规模数据 UIO,支持千万小时语音训练任务近日,WeNet 中更新了超大规模数据 UIO (Unified IO) 支持,可以支持工业级千万小时级别的语音数据训练,支持云存储 OSS/S3/HDFS 等,并且训练速度更快,接口更简单,更容易使用和调试。旧有 IO 方案的问题WeNet 中旧有的 IO 方案基于 Pytorch 原生的 Dataset,在训练时,需要一

DataBaker的博客 1202

教你如何用ffmpeg处理音频格式转换(标贝科技)

文章目录前言ffmpeg介绍?一、下载与安装1.下载安装包2.设置环境变量3.验证是否安装成功二、命令讲解1 参数解释2 音频格式转换命令三、标贝开放平台介绍前言ffmpeg介绍?FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案(本章介绍:ffmpeg的安装及音频转换命令使用)一、下载与安装1.下载安装包ffmpeg官网地址:https://ffmpeg.org/downlo..

DataBaker的博客 8257

手把手教你用JAVA实现“声音复刻”功能(复刻你的声音)标贝科技

手把手教你用JAVA调用websocket实现“语音识别”功能(声音转文字)标贝科技前言什么是语音识别?将自然语音转换为文本信息,本篇文章将介绍“长语音识别”(对长时间持续输入的语音流进行识别,例:视频直播)一、内容太长不愿意看,直接使用系列首先确认接口调用要求:支持音频格式:wav,pcm(Linear pcm)音频采样率:8000Hz,16000Hz位深:16bits声道:单声道时长限制:不超过3小时确认无误后,直接执行 2.2获取权限+2.3.4完整代码示例二、用JAVA调

DataBaker的博客 2197

手把手教你用JAVA实现“语音合成”功能(文字转声音)标贝科技

手把手教你用JAVA实现“语音合成”功能(文字转声音)标贝科技前言什么是语音合成?将文本转换成自然流畅的语音,本篇文章将介绍“实时在线合成”(文本长度不得超过1024字节)一、内容太长不愿意看,直接使用系列首先确认接口调用要求:合成音频的格式:PCM合成音频的采样率: 8000Hz,16000Hz支持语言:中文(zh),英文(eng),粤语(cat),四川话(sch)确认无误后,直接执行 2.2获取权限+2.3.4完整代码示例二、用JAVA调用标贝科技“语音合成”接口使用流程2.1

DataBaker的博客 4674

手把手教你用JAVA实现“语音识别”功能(声音转文字)标贝科技

手把手教你用JAVA实现“语音识别”功能(声音转文字)标贝科技前言什么是语音识别?将自然语音转换为文本信息,本篇文章将介绍“一句话识别”(对60秒以内的语音进行实时转写识别)一、内容太长不愿意看,直接使用系列首先确认接口调用要求:时长限制:60秒以内支持音频格式:wav,pcm音频采样率:8000Hz,16000Hz位深:16bits声道:单声道确认无误后,直接执行 2.2获取权限+2.3.3完整代码示例二、用JAVA调用标贝科技“语音识别”接口使用流程2.1.环境准备jav

DataBaker的博客 6160

手把手教你用JAVA调用Websocket实现“声音转换”功能(变声)标贝科技

手把手教你用JAVA调用Websocket实现“声音转换”功能(变声)前言什么是声音转换?基于深度学习和迁移学习技术,精准将原说话人的声音转换为目标说话人,同时保留原说话人的风格特色。让声音有更多的表现形式。一、内容太长不愿意看,直接使用系列首先确认接口调用要求:实现方式:Websocket支持音频文件的编码格式及文件名的后缀: pcm支持音频文件的采样率/位深: 16000Hz/16bit支持的语言:中文普通话音频有效时长:不超过180分钟确认无误后,直接执行 2.2获取权限+2

DataBaker的博客 1348

WAV2VEC:针对语音识别的无监督预训练

WAV2VEC: UNSUPERVISED PRE-TRAINING FOR SPEECH RECOGNITION概要本文使用大量的无标签数据集去预训练wav2vec模型,从而提升声学模型效果。本文训练的模型在性能上超越了Deep Speech 2,在nov92测试集上,WER达到了2.43%。1 简介预训练在深度学习算法中是一个很常用的方法,主要作用是能提升模型性能,即使是在当前带标签数据集的很少的情况下。主要方法是通过大量的无标签数据或者有标签的其他数据集对模型进行训练,可以使模型学习到通用的特

DataBaker的博客 3286

MFCC特征介绍

MFCC特征介绍在语音识别技术中,需要提取音频的特征,然后就可以使用该音频进行模型的训练或者是进行识别,目前很常用的一种特征叫做MFCC特征,又叫做梅尔倒谱系数特征。MFCC特征保留了语义相关的一些内容,过滤掉了诸如背景杂音等无关的信息。MFCC的特点是使用一组用来创建梅尔倒谱的关键系数,这样使得它的倒频谱和人类非线性的听觉系统更为接近。具体步骤如下:对音频信号进行分帧加窗将信号进行傅里叶变换将频谱映射到梅尔刻度取对数进行DCT变换为什么要对音频信号进行分帧加窗?因为音频信号本身是非平

DataBaker的博客 5730

Self-training and Pre-training are Complementary for Speech Recognition自训练和与预训练在语音识别中的互补

Self-training and Pre-training are Complementary for Speech Recognition自训练和与预训练在语音识别中的互补简介self-training和无监督的预训练可以互补,用来优化语音识别系统,但是还不清楚他们是否学习到了详细的patterns或者如何将他们有效的结合。本文仅使用了10分钟的带标签的数据(Libri-light)和5,300小时的无标签数据(LibriVox)进行训练,在Librispeech的clean和other的数据集上W

DataBaker的博客 670

手把手Python调用websocket接口实现实时语音合成,文字转语音

手把手使用Python进行语音合成,文字转语音0. 太长不看系列,直接使用1. Python调用标贝科技语音合成接口,实现文字转语音1.1 环境准备:1.2 获取权限1.2.1 登录1.2.2 创建新应用1.2.3 选择服务1.2.4 获取Key&Secret2. 代码实现2.1 获取access_token2.2 准备数据2.3 配置接口参数2.4 建立websocket客户端2.5 执行0. 太长不看系列,直接使用在1.2官网注册后拿到APISecret和APIKey,直接复制文章2.5de

DataBaker的博客 1503
上一篇: srilm的安装与使用(标贝科技)
下一篇: postman安装使用教程(标贝科技)
DataBaker标贝科技
DataBaker标贝科技 标贝科技官方账号 标贝科技官方账号
博客等级 码龄5年 39粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值