10
6月
2021
15:54

根据字典创建用于学习 CW 的 MP3 音频文件

10 6月 2021 15:54

任务是根据俄语单词创建一个用于训练用耳朵接收电报的 MP3 文件,该文件将按随机顺序排列,但不会重复。

最大的计划是输出无限数量的 MP3 文件,以便在袖珍 MP3/FM 接收器中收听。

1. 创建最常用俄语单词词典

我在网上找到了一本俄语频率词典,并从中挑选了最常用的单词。
freqrnc2011.ods.zip

使用标准 LibreOffice 过滤器,Calc 从表中删除专有名称和带有连字符的单词,并按字母长度将它们划分为文件。 从 2 个字母、从 3 个字母等,最多 18 个字母。

下载存档中包含俄语单词的文件:

top_rus.zip

档案中的专有名称:
名称_rus.zip

4 个字母的单词示例:
躯干
部落
香桃木
双桅船
耻辱


查德

伊玛目
触角
油类
互联网
埃里克
肉末
福克斯
宝藏
尸体
太棒了
图标案例
臭虫
卡其色

2. 以随机顺序对单词进行反向排序(洗牌)。

我编写了命令:

cat top4.txt | tr ' ' '\n' | uniq | sort -R

其中:

  • top4.txt - 输入文件名。
  • tr 命令用换行符替换空格。
  • sort - R - 与排序相反的操作(以随机顺序打乱单词)。

输出生成为标准流 stdout т.е. можно после этой команды использовать другие, берущие исходные данные из потока ввода stdin

3.生成MP3文件——使用ebook2cw命令

sudo apt-get install ebook2cw

该程序使用 ebook2cw 命令启动,指定输入文件和参数,如下所示:

ebook2cw top3.txt -w 20 -e 20 -f 800 -b 64 -o 20wpm -d 60 -u -t 20wpm

ebook2cw ebook2cw 是一个命令行程序,可将纯文本电子书转换为莫尔斯电码
code audio files. It works on several platforms, including Windows and Linux.

其中:

-w 20 - WPM 速度(每分钟字数)
-e 20 - 有效 WPM 速度(每分钟字数)
-f 800 - 电报音频率 800(赫兹)
-b 64 - 比特率,即生成的 MP3 文件的速度
-q 8 - MP3 质量从 1 到 9(1 是最好的质量,9 是最差的)
-o 20wpm - 文件名前缀“20wpm"

-d 60 - 将文件分割成每个 60 秒的片段(持续时间)
-u - 对俄语使用 Unicode 编码。
-t 20wpm - 输出文件的 ID 标记中的标头

结果,将非常快地创建带有莫尔斯电码的 mp3 文件(速度比平常快 300 倍):

ebook2cw 0.8.2 - (c) 2013 by Fabian Kurz, DJ1YFK

Reading configuration file: /home/vladimir/.ebook2cw/ebook2cw.conf

Speed: 20wpm, Freq: 800Hz, Chapter: >CHAPTER<, Encoding: UTF-8

Effective speed: 20wpm, Extra word spaces: 0.0, QRQ: 0min, reset QRQ: yes

Chapter limit: 60 seconds, Encoder: MP3

Starting 20wpm0000.mp3

Warning: don't know CW for unicode &#1019;

words: 405, time: 14:30

Finishing 20wpm0000.mp3

Total words: 405, total time: 14:30

Conversion time: 2s (Speedup: 290.0x)

4. 将一切连接在一起

在终端中运行的命令采用以下形式:

cat top2.txt | tr ' ' '\n' | uniq | sort -R | ebook2cw -w 20 -e 20 -f 800 -b 64 -o 20wpm-2- -d 60 -u -t 20wpm

其中 top2.txt 是输入文件的名称。
20wpm-2- 是 MP3 输出文件前缀。

团队工作成果的示例
(对于一组 4 个字母的单词,CW 速度为 18 WPM)

原话:
1.txt.zip

团队:

cat 1.txt | tr ' ' '\n' | uniq | sort -R | ebook2cw -w 18 -e 18 -f 800 -b 64 -o 18wpm-1- -d 60 -u -t 18wpm

启动结果(-o 18wpm-1-):

重新启动的结果(-o 18wpm-2-):

重新启动的结果(-o 18wpm-3-):

5.多次运行命令创建不同的MP3文件

该命令可以运行多次。 如果-o选项相同,则每次都会创建一个名称相同但内容不同的文件。

我给自己设定了在每次命令运行后更改文件后缀(-01、-02 - 03 等)的任务。
第二天我解决了这个问题。 我用 BASH 命令文件语言编写了一个脚本:

#!/bin/bash

#

# #This is a script that creates number of mp3 files with morse code

# Usage: hello some.txt 5 20

# where some.txt - input text file

# 5 - number of files

# 20 - speed wpm

txt=$1

max=$2

speed=$3

if [ -z txt ]; then

echo "Input text file:"

read txt

fi

if [ -z $max ]; then

echo "Number of MP3 files to create:"

read max

fi

if [ -z $speed ]; then

echo "CW speed in WPM:"

read speed

fi

echo max = $max

echo speed = $speed

delim="-"

ext=".mp3"

for (( cnt=1; cnt<=$max; cnt++ )); do

name1=$(printf "%02dwpm" $speed)

name2=$(printf "%03d" $cnt)

title=$txt$delim$name1$delim$name2

name=$title$ext

cat $txt | tr ' ' '\n' | uniq | sort -R | ebook2cw -u -f 800 -b 64 -w $speed -e $speed -t $title

mv -v "Chapter0000.mp3" "${name}"

done

exit 0


使用likecw.sh:

发射

bash likecw.sh 1-й_параметр 2-й_параметр 3-й_параметр

第一个参数 - 输入文件名,例如 top7.txt
第二个参数 - 要生成的文件数量
第三个参数 - WPM 速度

示例:

bash likecw.sh top7.txt 5 20
  • 将基于 top7.txt 以 CW 20wpm 创建 5 个 MP3 文件。

    喜欢cw.sh.zip

6.如何用一条命令处理所有TXT文件

对于从 top2.txt 到 top18.txt 的每个文件,以 20wpm 的速度创建 5 个 MP3 文件变体:

bash likecw.sh top{2..18}.txt 5 20


相关出版物