一个减少75%token的 claude code skill技能

2026-04-13 13:181阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

号称 “在保持完全技术准确性的同时,削减大约 75% 的token数量”,感觉更像是某种回复风格

github.com

GitHub - JuliusBrussee/caveman: 🪨 why use many token when few token do trick —...

🪨 why use many token when few token do trick — Claude Code skill that cuts 75% of tokens by talking like caveman

网友解答:
--【壹】--:

怎么实现的呢?完全没有损失那几乎不可能,只是好奇这个到底损失了啥


--【贰】--:

Question:讲解mel滤波器实现算法

Mel 滤波器组实现算法

核心概念

Mel 滤波器组是语音处理中的关键步骤,模拟人耳对频率的非线性感知——低频分辨率高,高频分辨率低。

频率转换公式

Hz → Mel:

mel = 2595 × log₁₀(1 + f/700)

Mel → Hz:

f = 700 × (10^(mel/2595) - 1)

实现步骤

Step 1:确定频率边界

import numpy as np def mel_filterbank(sample_rate, n_fft, n_filters, f_min=0, f_max=None): if f_max is None: f_max = sample_rate / 2 # Nyquist 频率 # Hz → Mel mel_min = 2595 * np.log10(1 + f_min / 700) mel_max = 2595 * np.log10(1 + f_max / 700)

Step 2:在 Mel 域均匀采样

# 在 Mel 域均匀分布 n_filters+2 个点(含两端边界) mel_points = np.linspace(mel_min, mel_max, n_filters + 2) # Mel → Hz hz_points = 700 * (10 ** (mel_points / 2595) - 1)

Step 3:映射到 FFT bin 索引

# FFT bin 索引:freq = bin * sample_rate / n_fft bins = np.floor((n_fft + 1) * hz_points / sample_rate).astype(int)

Step 4:构造三角滤波器

filters = np.zeros((n_filters, n_fft // 2 + 1)) for m in range(1, n_filters + 1): left = bins[m - 1] # 左边界 center = bins[m] # 中心(峰值) right = bins[m + 1] # 右边界 # 上升沿 for k in range(left, center): filters[m-1, k] = (k - left) / (center - left) # 下降沿 for k in range(center, right): filters[m-1, k] = (right - k) / (right - center) return filters

用向量化写法更高效:

for m in range(1, n_filters + 1): l, c, r = bins[m-1], bins[m], bins[m+1] filters[m-1] = np.maximum(0, np.minimum( (np.arange(n_fft//2+1) - l) / (c - l), (r - np.arange(n_fft//2+1)) / (r - c) ))

完整流程图

音频信号 │ ▼ 预加重(可选): x[n] = x[n] - α·x[n-1] │ ▼ 分帧 + 加窗(Hann/Hamming) │ ▼ FFT → 功率谱 |X[k]|² │ ▼ × Mel 滤波器组(三角滤波器) │ ▼ 每个滤波器求和 → n_filters 个能量值 │ ▼ 取 log(对数压缩) │ ▼ DCT → MFCC 系数(可选)

关键参数

参数 典型值 说明
n_filters 40~128 滤波器数量
n_fft 512/1024/2048 FFT 点数
f_min 0~80 Hz 最低频率
f_max 8000 Hz 最高频率(通常=采样率/2)
sample_rate 16000/22050 采样率

为什么是三角形?

  • 连续性:相邻滤波器之间平滑过渡,无频率盲区
  • 归一化:每个滤波器面积约为 1,保持能量一致性
  • 高频压缩:在 Hz 域看,高频三角形更宽(体现 Mel 非线性)

Mel域(均匀间隔): | | | | | | | | Hz域(非线性): ||||||| | | | |

低频滤波器窄(精细),高频滤波器宽(粗糙),与人耳特性一致。

Question: /caveman 讲解mel滤波器实现算法

Mel 滤波器实现

核心思想

人耳感知频率非线性。低频分辨率高,高频分辨率低。Mel scale 模拟此特性。

Hz → Mel 转换

mel = 2595 * log10(1 + hz / 700) hz = 700 * (10^(mel/2595) - 1)

实现步骤

1. 定频率范围

f_min = 0 # Hz f_max = sr / 2 # Nyquist

2. Mel空间均匀采样

# N个滤波器 → N+2个点(含两端边界) mel_points = linspace(hz2mel(f_min), hz2mel(f_max), N+2) hz_points = mel2hz(mel_points) # 转回Hz,非线性分布

3. FFT bin对齐

bin_points = floor((nfft+1) * hz_points / sr)

4. 构造三角滤波器

每个滤波器 m,跨3个点:左端 m-1,峰值 m,右端 m+1

for m in range(1, N+1): left, center, right = bin[m-1], bin[m], bin[m+1] # 上升段 fbank[m, left:center] = (k - left) / (center - left) # 下降段 fbank[m, center:right] = (right - k) / (right - center)

形状:(N_filters, nfft//2 + 1)

5. 应用滤波器

power_spec = |FFT(frame)|^2 mel_energies = fbank @ power_spec # shape: (N_filters,) log_mel = log(mel_energies + eps)

关键参数

参数 典型值 作用
N_filters 40 / 80 Mel通道数
nfft 512 / 1024 FFT点数
sr 16000 / 22050 采样率
f_min 0 / 80 Hz 低频截止
f_max sr/2 高频截止

数据流

音频帧 → 加窗 → FFT → 幂谱 → Mel滤波器组 → log → log-mel spectrogram ↓ 再加DCT → MFCC

低频密、高频稀本质

Mel空间等距 → Hz空间非等距。低频bin窄(精细),高频bin宽(粗糙)。模拟耳蜗basilar membrane响应。


--【叁】--:

非常神奇的 skill

在用 Opus 的时候,直接 @caveman wenyan-ultra,还是能够看到节省了一定的 Tokens 的


安装方法:npx skills add JuliusBrussee/caveman


--【肆】--:

到底是怎么实现的?能不能贴一段出来,我这没连梯子看不到,要是简化回复,那么对于写文之类的岂不是没有用处


--【伍】--:

总感觉这种简化的话,不会导致质量下降吗?


--【陆】--:

可以具体看下Skill.md, 代码、警告、安全等应该不受影响,主要是简化回复


--【柒】--:

真的假的,这么猛,codex里面可以用不?


--【捌】--:

这种过于精简的表达方式会不会影响模型能力?用符号来代替某些词句不会影响概率预测吗?
IMG_23921908×2682 536 KB