SOX的一些命令和kaldi使用sox音频数据增强

SOX的一些命令和kaldi使用sox音频数据增强

SOX的一些命令和kaldi使用sox音频数据增强

1 SOX win10和linux安装

2 sox命令

2.1 音频基本信息

2.2 音频采样率转换

2.3 wav和pcm互转

2.4 裁剪音频

2.5 提取指定通道数据

2.6 合并两个单通道为一个双通道

2.7 调整语速

2.8 音频串联合并

2.9 获取音频统计信息、调整音量

3 kaldi中使用sox音频数据增强

3.1 音速扰动(sp) utils/data/perturb_data_dir_speed_3way.sh

3.2 音量扰动vp utils/data/perturb_data_dir_volume.sh

3.3 加混响 steps/data/reverberate_data_dir.py

3.4 加性噪声 steps/data/augment_data_dir.py

3.5 kaldi中的wav-reverberate

Reference

如果喜欢FFMPEG命令,请看FFMPEG的一些命令

批量操作音频文件参考5.1 批量输出绝对路径下的所有音频并更名

yum install sox

apt install sox

sox win10下载地址和sox win10介绍

配置环境变量C:\JAVA\sox-14.4.2-win32

C:\JAVA\sox-14.4.2-win32;

C:\ProgramFiles\cmake-3.7.0-win64-x64\bin;

C:\JAVA\ffmpeg-20200504-5767a2e-win64-static\bin;

C:\ProgramFiles\node-v14.0.0-win-x64;

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin;

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp;

C:\Program Files\Java\jdk1.8.0_121\bin;

C:\Program Files\Java\jdk1.8.0_121\jre\bin;

C:\Python37;

C:\Python37\Scripts;

2.1 音频基本信息

# 下面两个命令都可以,window下只能sox --i

soxi demo.wav

sox --i demo.wav

Input File : 'demo.wav'

Channels : 1

Sample Rate : 16000

Precision : 16-bit

Duration : 00:00:04.88 = 78031 samples ~ 365.77 CDDA sectors

File Size : 156k

Bit Rate : 256k

Sample Encoding: 16-bit Signed Integer PCM

2.2 音频采样率转换

# 将单通道demo.wav音频采用指定编码器将采样率转换为16000的wav

# -c 1 表示单通道 -b表示位宽 -r表示采样率 三个角度可进行修改

sox demo.wav -c 1 -b 16 -r 8000 output.wav

2.3 wav和pcm互转

# 将单通道demo.wav按照16000采样率转换为pcm文件,要求原始就是小尾端字节序、有符号16位比特存储

sox demo.wav -b 16 -e signed-integer --endian little -c 1 -r 16000 -t raw output.pcm

# 将单通道demo.pcm按照16000采样率转换为wav文件,要求原始就是小尾端字节序、有符号16位比特存储

sox -b 16 -e signed-integer --endian little -c 1 -r 16000 -t raw demo.pcm output.wav

2.4 裁剪音频

# 裁剪[0,10]秒区间

sox demo.wav output.wav trim 0 10

2.5 提取指定通道数据

# 提取第2通道的数据,若提取第一通道设remix值为1,output.wav长度和较长的一个一致

sox demo.wav output.wav remix 2

2.6 合并两个单通道为一个双通道

# 将left通道和right通道进行合并为一个独立音频

sox -M demo.left.wav demo.right.wav output.wav

2.7 调整语速

【特别注意】语速调整阈值组好在[0.85,1.25]之间,否则音频质量严重变形

sox demo.wav output.wav speed 0.85

2.8 音频串联合并

这个会将两个音频进行串联合并,最后output.wav音频时长是demo.left.wav和demo.right.wav的时间之和。

sox demo.left.wav demo.right.wav output.wav

2.9 获取音频统计信息、调整音量

查看音量可以最大 调整值【Volume adjustment】

sox demo.wav -n stat

Samples read: 78031

Length (seconds): 4.876938

Scaled by: 2147483647.0

Maximum amplitude: 0.159882

Minimum amplitude: -0.134613

Midline amplitude: 0.012634

Mean norm: 0.016386

Mean amplitude: -0.000025

RMS amplitude: 0.024805

Maximum delta: 0.076752

Minimum delta: 0.000000

Mean delta: 0.004386

RMS delta: 0.008032

Rough frequency: 824

Volume adjustment: 6.255

# 调整音频缩小0.8,(大于1为扩大)

sox -v 0.8 demo.wav output.wav

3.1 音速扰动(sp) utils/data/perturb_data_dir_speed_3way.sh

调用方法run_ivector_common.sh#L43:

utils/data/perturb_data_dir_speed_3way.sh data/train data/train_sp

【utils/data/perturb_data_dir_speed_3way.sh】

会发现:

utils/data/perturb_data_dir_speed.sh 0.9 ${srcdir} ${destdir}_speed0.9

utils/data/perturb_data_dir_speed.sh 1.1 ${srcdir} ${destdir}_speed1.1

# 再将原来数据进行合并

utils/data/combine_data.sh $destdir ${srcdir} ${destdir}_speed0.9 ${destdir}_speed1.1 || exit 1

rm -r ${destdir}_speed0.9 ${destdir}_speed1.1

# 再检查数据是否正确

utils/validate_data_dir.sh --no-feats --no-text $destdir

【utils/data/perturb_data_dir_speed.sh其实是utils/perturb_data_dir_speed.sh】,里面调用了sox来做速度干扰

可见kaldi里面的速度干扰用的sox倍数是0.9和1.1

sp的话就会新增一个数据集了

3.2 音量扰动vp utils/data/perturb_data_dir_volume.sh

调用方法run_ivector_common.sh#L73:

里面其实用到了sox,直接修改了tran_sp_hires里面的wavs.scp文件,并没有新增数据集

utils/data/perturb_data_dir_volume.sh data/train_sp_hires

如:

HAO-001 sox --vol 1.54213288279 -t wav /data1/speechResource/HAO/HAO-001.wav -t wav - |

HAO-002 sox --vol 1.28444186877 -t wav /data1/speechResource/HAO/HAO-002.wav -t wav - |

HAO-003 sox --vol 0.653445958249 -t wav /data1/speechResource/HAO/HAO-003.wav -t wav - |

...

3.3 加混响 steps/data/reverberate_data_dir.py

rirs_noises.zip

这个混响包含了real和simulated,用的比较多是simulated中的小房间,中房间,对应房间大小分别是110m和1030m加性的

调用方法mobvoihotwords/v1/run.sh#L116-L135:

steps/data/reverberate_data_dir.py \

"${rvb_opts[@]}" \

--speech-rvb-probability 1 \

--prefix "rev" \

--pointsource-noise-addition-probability 0 \

--isotropic-noise-addition-probability 0 \

--num-replications 1 \

--source-sampling-rate 16000 \

data/train_shorter data/train_shorter_reverb

cat data/train_shorter/utt2dur | awk -v name=rev1 '{print name"-"$0}' >data/train_shorter_reverb/utt2dur

noise.noise_rspecifier = "sox {0} -r {1} -t wav - |".format(noise.noise_rspecifier, sampling_rate)

else:

noise.noise_rspecifier = "{0} sox -t wav - -r {1} -t wav - |".format(noise.noise_rspecifier, sampling_rate)

# 混响增强

rev1-0003b40554dd83e95d9f77a86d9c28a6-0003b40554dd83e95d9f77a86d9c28a6-00000000-00000210 wav-copy data/train_shorter/data/wav_segments.1.ark:625364 - | wav-reverberate --shift-output=true --impulse-response="sox RIRS_NOISES/simulated_rirs/smallroom/Room060/Room060-00042.wav -r 16000 -t wav - |" - - |

rev1-000414cb940dc155a7d4cc9b66538607-000414cb940dc155a7d4cc9b66538607-00000000-00000211 wav-copy data/train_shorter/data/wav_segments.1.ark:692692 - | wav-reverberate --shift-output=true --impulse-response="sox RIRS_NOISES/simulated_rirs/mediumroom/Room046/Room046-00011.wav -r 16000 -t wav - |" - - |

rev1-00043653948102852b37edcf558ca535-00043653948102852b37edcf558ca535-00000000-00000056 wav-copy data/train_shorter/data/wav_segments.1.ark:760340 - | wav-reverberate --shift-output=true --impulse-response="sox RIRS_NOISES/simulated_rirs/mediumroom/Room130/Room130-00034.wav -r 16000 -t wav - |" - - |

3.4 加性噪声 steps/data/augment_data_dir.py

musan.tar.gz

这个加性包含人声babble,音乐背景声和真实噪声。这两个噪声库很好,另外就是用sox改改音速和音量,这些dither也可以考虑进去。

调用方法mobvoihotwords/v1/run.sh#L139-L155:

# 对musan自己的数据集产生kaldi的数据格式,会有一个总的data/musan 分的data/musan_music data/musan_noise data/musan_speech

steps/data/make_musan.sh /data1/kaldi/corpora/musan data

# Get the duration of the MUSAN recordings. This will be used by the

# script augment_data_dir.py.

for name in speech noise music; do

utils/data/get_utt2dur.sh data/musan_${name}

cp data/musan_${name}/utt2dur data/musan_${name}/reco2dur

done

# Augment with musan_noise

export LC_ALL=en_US.UTF-8

steps/data/augment_data_dir.py --utt-prefix "noise" --modify-spk-id true --fg-interval 1 --fg-snrs "15:10:5:0" --fg-noise-dir "data/musan_noise" data/train_shorter data/train_shorter_noise

# Augment with musan_music

steps/data/augment_data_dir.py --utt-prefix "music" --modify-spk-id true --bg-snrs "15:10:8:5" --num-bg-noises "1" --bg-noise-dir "data/musan_music" data/train_shorter data/train_shorter_music

# Augment with musan_speech

steps/data/augment_data_dir.py --utt-prefix "babble" --modify-spk-id true --bg-snrs "20:17:15:13" --num-bg-noises "3:4:5:6:7" --bg-noise-dir "data/musan_speech" data/train_shorter data/train_shorter_babble

export LC_ALL=C

# 噪音加性增强

noise-00022952a0c58c9aa6c85b57a06e0fd3-00022952a0c58c9aa6c85b57a06e0fd3-00000000-00000148 wav-copy data/train_shorter/data/wav_segments.1.ark:519700 - | wav-reverberate --shift-output=true --additive-signals='/data1/kaldi/corpora/musan/noise/free-sound/noise-free-sound-0718.wav' --start-times='0' --snrs='10' - - |

noise-000232ce10717642b15469276c065154-000232ce10717642b15469276c065154-00000000-00000076 wav-copy data/train_shorter/data/wav_segments.1.ark:567188 - | wav-reverberate --shift-output=true --additive-signals='/data1/kaldi/corpora/musan/noise/free-sound/noise-free-sound-0167.wav' --start-times='0' --snrs='15' - - |

noise-00023dad939ab3c63b515bf6fdccfd83-00023dad939ab3c63b515bf6fdccfd83-00000000-00000105 wav-copy data/train_shorter/data/wav_segments.1.ark:591636 - | wav-reverberate --shift-output=true --additive-signals='/data1/kaldi/corpora/musan/noise/sound-bible/noise-sound-bible-0084.wav' --start-times='0' --snrs='0' - - |

noise-0003b40554dd83e95d9f77a86d9c28a6-0003b40554dd83e95d9f77a86d9c28a6-00000000-00000210 wav-copy data/train_shorter/data/wav_segments.1.ark:625364 - | wav-reverberate --shift-output=true --additive-signals='/data1/kaldi/corpora/musan/noise/free-sound/noise-free-sound-0792.wav' --start-times='0' --snrs='15' - - |

# 音乐加性增强

music-0002218b62ea517d039f3cb529eff05d-0002218b62ea517d039f3cb529eff05d-00000237-00000404 wav-copy data/train_shorter/data/wav_segments.1.ark:465992 - | wav-reverberate --shift-output=true --additive-signals='wav-reverberate --duration=1.674375 "/data1/kaldi/corpora/musan/music/fma/music-fma-0092.wav" - |' --start-times='0' --snrs='5' - - |

music-00022952a0c58c9aa6c85b57a06e0fd3-00022952a0c58c9aa6c85b57a06e0fd3-00000000-00000148 wav-copy data/train_shorter/data/wav_segments.1.ark:519700 - | wav-reverberate --shift-output=true --additive-signals='wav-reverberate --duration=1.48 "/data1/kaldi/corpora/musan/music/fma/music-fma-0006.wav" - |' --start-times='0' --snrs='8' - - |

music-000232ce10717642b15469276c065154-000232ce10717642b15469276c065154-00000000-00000076 wav-copy data/train_shorter/data/wav_segments.1.ark:567188 - | wav-reverberate --shift-output=true --additive-signals='wav-reverberate --duration=0.76 "/data1/kaldi/corpora/musan/music/fma/music-fma-0107.wav" - |' --start-times='0' --snrs='15' - - |

# 嘈杂人声加性增强

babble-00017d340fe9b684011e1639d06fa3b6-00017d340fe9b684011e1639d06fa3b6-00000000-00000250 wav-copy data/train_shorter/data/wav_segments.1.ark:124500 - | wav-reverberate --shift-output=true --additive-signals='wav-reverberate --duration=2.5 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0114.wav" - |,wav-reverberate --duration=2.5 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0186.wav" - |,wav-reverberate --duration=2.5 "/data1/kaldi/corpora/musan/speech/librivox/speech-librivox-0083.wav" - |,wav-reverberate --duration=2.5 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0050.wav" - |,wav-reverberate --duration=2.5 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0132.wav" - |' --start-times='0,0,0,0,0' --snrs='15,17,20,20,13' - - |

babble-00018c7f9e3f4d4a709b9a43ccd6943b-00018c7f9e3f4d4a709b9a43ccd6943b-00000000-00000166 wav-copy data/train_shorter/data/wav_segments.1.ark:204628 - | wav-reverberate --shift-output=true --additive-signals='wav-reverberate --duration=1.66975 "/data1/kaldi/corpora/musan/speech/librivox/speech-librivox-0003.wav" - |,wav-reverberate --duration=1.66975 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0201.wav" - |,wav-reverberate --duration=1.66975 "/data1/kaldi/corpora/musan/speech/librivox/speech-librivox-0052.wav" - |' --start-times='0,0,0' --snrs='15,13,20' - - |

babble-00018c7f9e3f4d4a709b9a43ccd6943b-00018c7f9e3f4d4a709b9a43ccd6943b-00000137-00000519 wav-copy data/train_shorter/data/wav_segments.1.ark:258188 - | wav-reverberate --shift-output=true --additive-signals='wav-reverberate --duration=3.82025 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0168.wav" - |,wav-reverberate --duration=3.82025 "/data1/kaldi/corpora/musan/speech/librivox/speech-librivox-0064.wav" - |,wav-reverberate --duration=3.82025 "/data1/kaldi/corpora/musan/speech/librivox/speech-librivox-0149.wav" - |' --start-times='0,0,0' --snrs='17,20,13' - - |

babble-0002218b62ea517d039f3cb529eff05d-0002218b62ea517d039f3cb529eff05d-00000000-00000266 wav-copy data/train_shorter/data/wav_segments.1.ark:380564 - | wav-reverberate --shift-output=true --additive-signals='wav-reverberate --duration=2.665625 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0071.wav" - |,wav-reverberate --duration=2.665625 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0067.wav" - |,wav-reverberate --duration=2.665625 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0220.wav" - |,wav-reverberate --duration=2.665625 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0002.wav" - |,wav-reverberate --duration=2.665625 "/data1/kaldi/corpora/musan/speech/librivox/speech-librivox-0105.wav" - |,wav-reverberate --duration=2.665625 "/data1/kaldi/corpora/musan/speech/librivox/speech-librivox-0006.wav" - |,wav-reverberate --duration=2.665625 "/data1/kaldi/corpora/musan/speech/us-gov/speech-us-gov-0220.wav" - |' --start-times='0,0,0,0,0,0,0' --snrs='15,20,15,13,15,13,13' - - |

3.5 kaldi中的wav-reverberate

需要先设置Kaldi模型信息分析中的调试准备,才会有这个命令。

使用Pipe管道,通过输入管道提供的wav波形文件,将 室内脉冲响应(rir_matrix)和加性噪声失真

(由相应的文件指定)进行数据增强。

#--duration=20.25是管道输入音频的时长

# --snrs 信噪比缩放比例,越大噪音越小

# --start-times='0,17.8' 对管道输入音频的添加数据增强的时间区域片段

wav-reverberate --duration=20.25 \

--impulse-response=rir.wav \

--additive-signals='noise1.wav,noise2.wav' \

--snrs='20.0,15.0' --start-times='0,17.8' input.wav output.wav

混响增强的话不许需要snrs值

sox安装及常用命令

Linux 对音频万能处理的命令——SOX

Kaldi当中语音数据增强有什么方法

kaldi加噪声or混响or能量衰减

SOX的一些命令和kaldi使用sox音频数据增强相关教程

管道相关命令(cut sort wc uniq tee tr split awk sed grep)

管道相关命令(cut sort wc uniq tee tr split awk sed grep) 管道相关命令 cut sort wc uniq tee tr split awk sed grep 文章目录 管道相关命令 2 sort 2.1去重排序 2.2 对数值排序 3 wc命令 3.1显示指定文件 字节数, 单词数, 行数 信息. 3.2显示 文件 的行

thinkPHP cli命令行运行PHP代码

下面由 thinkphp 教程栏目给大家介绍thinkPHP cli命令行运行PHP代码的方法,希望对需要的朋友有所帮助! 这几天在做项目的过程中,刚好需要用到 在thinkPHP中利用cli来运行 某个控制器中的方法,在官方手册上查找,找到后,根本不知道怎么用: 一头雾水,一

命令行怎么设置mysql编码格式

命令行设置mysql编码格式的方法:1、在命令行中登录mysql,进入mysql命令行编辑模式;2、使用SET命令来设置mysql编码格式,语法“set character_set_..=utf8”。 问题描述:使用JDBC向mysql插入数据时中文乱码(中文以?显示) 解决思路:eclipse以及eclipse

css一些不常见但很有用的属性操作

css一些不常见但很有用的属性操作 1、自定义文本选择 ::selection { background: red; color: black;} 2、去掉video的controls中的下载按钮 video::-internal-media-controls-download-button { display:none;}video::-webkit-media-controls-enclosure { ove

kettle通过命令行参数传递数据库连接信息

kettle通过命令行参数传递数据库连接信息 在用kettle进行数据库数据同步时,需要设置数据库连接信息,但是一般开发环境和生产环境数据库不一样,如果在开发阶段把数据库连接信息写死,那么在生产环境部署时又要重新打开.krt或.kjb文件重新编辑数据库连接信息

IOSlibimobiledevice常用命令

【IOS】libimobiledevice常用命令 libimobiledevice 是一个跨平台的软件库,支持 iPhone, iPod Touch, iPad and Apple TV 等设备的通讯协议。 安装 命令: brew install --HEAD libimobiledevicebrew install --HEAD ideviceinstallerPS:需要加上 –HEAD 选

Linux终端命令格式

Linux终端命令格式 常用快捷键 tab键:命令或者路径提示及补全; ctrl+c:放弃当前输入,终止当前任务或程序; ctrl+l:清屏; ctrl+shift+c:复制; ctrl+shift+v:粘贴; alt+b :打开connect窗口; alt+1/2/3/4/5… :切换会话窗口 常用Linux命令的基本使用

alias命令是什么

alias命令是用于设置指令的别名,用户可利用alias,自定指令的别名,该命令的语法是“alias[别名]=[指令名称]”,其中若不加任何参数,则会列出目前所有的别名设置。 推荐:《linux教程》 Linux alias命令用于设置指令的别名。 用户可利用alias,自定指令的

linux sox录音时间控制,SOX的一些命令和kaldi使用sox音频数据增强相关推荐

  1. SOX的一些命令和kaldi使用sox音频数据增强

    SOX的一些命令和kaldi使用sox音频数据增强 1 SOX win10和linux安装 2 sox命令 2.1 音频基本信息 2.2 音频采样率转换 2.3 wav和pcm互转 2.4 裁剪音频 ...

  2. linux启动本地远程服务,如何使用SSH在本地控制远程服务器执行命令

    通过SSH在本地控制远程服务器执行命令,如果每次都要登录到远程服务器真的好麻烦,起始通过SSH就可以远程执行 在本地使用 ssh $RemoteNode    可以在执行远程机器上的命令,例如 ssh ...

  3. linux快捷命令补齐,Linux Shell简介——自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式.doc...

    Linux Shell简介--自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式 Unix (及后继者 Linux)在命令行下面诞生,因此,Unix 中的命令行有许多非常实用的功能. ...

  4. 构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock

    构建LINUX下的入侵检测系统--LIDS   系统管理命令--vlock http://blog.chinaunix.net/uid-306663-id-2440200.html LIDS官方网站: ...

  5. 你真正的去了解过Linux吗?不单单是一些命令操作,比如它的系统架构!!!

    文章较长,建议慢慢看!!!^_^ Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并 ...

  6. Linux远程访问及控制(SSH、TCP Wrappers 访问控制)

    Linux远程访问及控制 一.SSH远程管理 1.SSH定义 2.SSH数据传输优点 3.SSH客户端和服务端 二.OpenSSH 1.配置OpenSSH 服务端配置 2.scp远程复制 3.sftp ...

  7. linux之路由知识之ip route 命令中的疑惑

    1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...

  8. [转载]对 Linux 专家非常有用的 20 个命令

    原文出处: Tecmit   译文出处: oschina.欢迎加入技术翻译小组. 在第一部分文章中我们讨论了那些都只是切换到 Linux 和linux新手所需的必要知识的用户的命令. 对 Linux ...

  9. linux系列(一):ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写,默认下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  10. 在linux中at 调度出错,linux系统中的调度延迟任务:at 命令

    linux系统中的调度延迟任务:at 命令 主要概念 at命令可以使命令稍后运行 batch命令可以让命令在机器负载较低的情况下运行 可以直接进入命令,或者以脚本形式提交命令 作业中的标准输出用邮件发 ...

最新文章

  1. mysql顺序结构_MySQL学习之流程结构
  2. C++多线程的简单程序
  3. index.wxss 导入不显示结果
  4. java中junit用法,JUnit基本用法
  5. hive大字段拼接与切割实战(一个大字段保存每天历史数据)
  6. python解压并另存 .bz2文件的方法
  7. Matlab实现均值滤波
  8. Excel Mrp生产计划工具
  9. 【UML】聊聊系统建模
  10. python红色的颜色表达式_python – 排序(十六进制)颜色以匹配彩虹
  11. 有一个Map集合里面存储的是学生的姓名和年龄,内容如下{赵四=21,王二=17,张三=18,小丫=25,李四=26,王五=38}(15分) * a.将里面的元素用两种遍历方式打印到控制台上 *
  12. 洛阳理工学院计算机类分数线,2017洛阳理工学院录取分数线
  13. 套头文件html重复,关于C++头文件重复包含的问题
  14. java基础之Integer和Long
  15. qq音乐 (轮播图) 详细介绍
  16. Ubuntu下有线连接开无线WIFI的3种方式
  17. 小区宽带不能上网的解决办法
  18. 2011移动开发者大会后记
  19. 解决:cannot import name ‘xxx‘ from ‘xxx‘
  20. 剑与远征游戏系统分析

热门文章

  1. 笔记本键盘被锁定了怎么办?笔记本如何解锁键盘?
  2. 【原】制造垃圾邮件设想【未尝试】
  3. 【游戏】金融帝国2:金融帝国实验室(Capitalism Lab)3.0.19安装包下载
  4. 1.1 VSCode中使用Code runner配置C++单文件多文件编译,并自动创建bin文件夹把.exe文件放入其中
  5. 小端格式和大端格式(Little-EndianBig-Endian)
  6. 钢铁厂计算机相关岗位需要倒班吗,钢铁厂车间倒班,听听他们的心声!
  7. 认证 (authentication) 和授权 (authorization) 的区别
  8. 贝叶斯算法(bayesian)在反垃圾邮件中的应用
  9. appcan java_appcan下载
  10. ABBYY FineReader Engine OCR 软件开发工具包深度解析