Speak-N-Spell分析和自定义语音包软件
在2019年的Speak&Spell Toys上进行分析和修改(以“经典80年代设计”的“基本娱乐”品牌出售)。
安装 /先决条件
Python环境
要将spana (说话范围分析)软件包安装到虚拟环境中,请运行:
speaknspell_analysis/
python3.13 -m venv .venv
source .venv/bin/activate
# install `spana` from this checkout in editable mode
pip install -e .
\”>
cd speaknspell_analysis / python3.13 -m venv .venv source .venv/bin/activate pip install -U pip # install `spana` from this checkout in editable mode pip install -e .
其他(可选)工具
em100开源命令行工具- 从这里
- 编译并安装它,以便在
PATH上可用em100二进制 - 请记住将UDEV规则安装到
/etc/udev/rules.d/
-
flashrom(用于阅读和重新编程您的SPI Flash)- 从这里
- 编译并安装它,以便在
PATH上可用flashrom命令
用法
此存储库中提供了3个主要功能:
- 编译新的Speak&Spell 2019兼容“语音包”。
- 解码SPI闪光图像
- 使用
python -m spana.live_traceSPI Flash数据访问的“实时跟踪”
注意:2和3要求您具有提取的Speak&Spell 2019 Flash图像(请参见下文,以了解如何使用SPI Flash读取器进行此操作)。
编译新的语音包。
您将需要223个左右的WAV文件(以10kHz的样本率,当前代码没有重新采样)。您可以自己生成这些(通过记录自己在known_phrases.csv中说单词和短语)或在voice_packs/snoop_dogg目录中使用现有的单词和短语。
编译:
$ python -m spana.compile_voice_pack --wav-dir voice_packs/snoop_dogg/
Encoding 224 files in 14 parallel processes...
Allocating...
Relocating...
Saving to compiled_voice_pack.bin
注意:该脚本在WAV文件名中寻找一个3位数字(带有领先的零),以将文件映射到特定的偏移表索引。在.wav后缀之前(例如angel_042.wav , 042_angel.wav和ANG042EL.wav都可以接受)。
用法:
python -m spana.compile_voice_pack --help
usage: compile_voice_pack [-h] -d WAV_DIR
Build a Speak & Spell flash image from wav files
options:
-h, --help show this help message and exit
-d, --wav-dir WAV_DIR
Input search dir for wav files
The directory specified with -d/--wav-dir should contain 223 WAV files (at 10kHz sample rate). Each wav file should have a 3-digit (with leading zeros) number in the filename
(e.g. 042_angel.wav) which indicates which record in the offset table it will be encoded into. See known_phrases.csv for a list of all known Speak&Spell words.
decoder
将2019年Speak&Spell SPI闪光图像中的所有声音斑点解码为WAV文件。
默认情况下在Original_flash_image文件上操作,也可以在命令行上指定(使用--help进行选项)
例子:
$ python -m spana.decode_sounds_to_wav wrote decoded_sounds/ss_000_A.wav, enc size: 2944, pcm size: 11178, CR: 3.80 wrote decoded_sounds/ss_001_B.wav, enc size: 2448, pcm size: 9292, CR: 3.80 wrote decoded_sounds/ss_002_C.wav, enc size: 2784, pcm size: 10580, CR: 3.80 wrote decoded_sounds/ss_003_D.wav, enc size: 2192, pcm size: 8188, CR: 3.74 wrote decoded_sounds/ss_004_E.wav, enc size: 2368, pcm size: 8924, CR: 3.77 wrote decoded_sounds/ss_005_F.wav, enc size: 2128, pcm size: 8004, CR: 3.76 ...
live_trace (需要EM-100 SPI Flash Emulator)
将(可选修改的)SPI Flash图像加载到EM-100 SPI Flash Emulator上
例子:
$ python -m spana.live_trace -M chipmunk_mode
从您自己的Spice&Spell SPI Flash中提取闪光图像(与live_trace一起使用)
由于知识产权的问题,我在这里不发行2019年的Speak&Spell Spi闪光图像。
但是,您可以使用SPI Flash读取器从说话和咒语中提取自己的图像。一个不错的便宜选择是CH341A SPI Flash Reader,它很容易在Amazon,eBay,Aliexpress等上获得。
CH341A与Linux上的尊贵的flashrom命令兼容,而flashrom命令的现代版本支持我在设备内发现的Boyamicro SPI Flash IC(尽管也有可能使用其他SPI Flash芯片制作说话和咒语)。
speaknspell_analysis
mkdir -p flash_images
sudo flashrom -p ch341a_spi -c \’XM25QH80B\’ -r flash_images/ORIGINAL_FLASH_IMAGE\”>
cd speaknspell_analysis
mkdir -p flash_images
sudo flashrom -p ch341a_spi -c \'XM25QH80B\' -r flash_images/ORIGINAL_FLASH_IMAGE
该存储库中的代码取决于原始闪存图像,假设您将其放置在speaknspell_analysis /flash_images/ORIGINAL_FLASH_IMAGE中。
我先前分析的闪光图像的SHA256总和是: 0da032eae0bd5665ad4f3905d9e16f5b7efc75f04907b26e79f96e74380ce511 。如果您的Flash图像具有不同的哈希,也许您已经发现了一个新版本(或检查您的Flash读取器是否有联系中的问题)。
我只想要史努比和拼写
将您的2019年讲与咒语转换为史努比:
- deSolder spi flash ic
- 插入CH341A Flash读取器
- (可选)在“提取闪光图像”中所述进行备份(您永远不会知道)
- 运行以下命令(使用Flashrom的最新版本)将Snoop&Spell语音包写入Flash IC:
flashrom -p ch341a_spi -c \'XM25QH80B\' -w snoop_and_spell.bin
- 将闪光灯重新定位到位。
- 羡慕所有朋友。
相关演示
- 如DistrictCon年0(2025年2月22日)所示:黑客记忆的故事是反向工程,音频编码的故事,从未成长
- 演示幻灯片
- 演示视频
