npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@hayatialikeles/dtln-rs

v0.3.1

Published

Real-time noise suppression for audio using Dual-Signal Transformation LSTM Network (DTLN)

Readme

dtln-rs

License Node Version Platform

Node.js için yüksek performanslı gerçek zamanlı gürültü bastırma

Rust ile geliştirildi 🦀 | DTLN Sinir Ağı ile desteklenir 🧠 | Üretime hazır 🚀

Türkçe | English


🎯 Genel Bakış

dtln-rs, Node.js için yüksek performanslı bir ses gürültü bastırma kütüphanesidir ve Dual-Signal Transformation LSTM Network (DTLN) mimarisi üzerine inşa edilmiştir. Maksimum performans için Rust ile geliştirilmiş ve native Node.js eklentisi olarak paketlenmiştir. Gerçek zamanlıya yakın gürültü azaltma özellikleri şunlar için mükemmeldir:

  • 🎙️ Sesli aramalar ve konferanslar (WebRTC entegrasyonu)
  • 🎵 Ses akışı uygulamaları
  • 🎧 Podcast ve ses prodüksiyon araçları
  • 📞 VoIP uygulamaları
  • 🤖 Sesli AI asistanları

✨ Temel Özellikler

  • Ultra hızlı: Modern donanımda gerçek zamandan 55x daha hızlı işler
  • 🎯 Yüksek Kalite: En gelişmiş DTLN sinir ağı mimarisine dayalıdır
  • 🔌 Tak ve Kullan: Önceden derlenmiş binary'ler dahil - Rust kurulumu gerektirmez
  • 🌍 Çapraz platform: macOS (Intel & Apple Silicon), Linux (x64 & ARM64)
  • 🪶 Hafif: Sadece ~4MB ML modeli, edge deployment için optimize edilmiş
  • 🔒 Thread-safe: Eşzamanlı işleme için tasarlanmış
  • 📦 Sıfır bağımlılık: Kendi kendine yeten native modül

🚀 Hızlı Başlangıç

Kurulum

npm install dtln-rs

Bu kadar! Önceden derlenmiş binary'ler şunlar için dahildir:

  • ✅ macOS ARM64 (Apple Silicon)
  • ✅ macOS x64 (Intel)
  • ✅ Linux x64
  • ✅ Linux ARM64

Temel Kullanım (JavaScript)

const dtln = require('@hayatialikeles/dtln-rs');

// Denoiser başlat
const denoiser = dtln.dtln_create();

// Ses bufferlarını hazırla (16kHz, mono, Float32Array)
const inputAudio = new Float32Array(512);  // Gürültülü sesiniz
const outputAudio = new Float32Array(512); // Temiz ses çıktısı

// Ses frame'ini işle
const isStarved = dtln.dtln_denoise(denoiser, inputAudio, outputAudio);

// Temizle
dtln.dtln_stop(denoiser);

TypeScript Kullanımı

Tam TypeScript desteği - tip tanımlamaları dahil!

import * as dtln from '@hayatialikeles/dtln-rs';

const denoiser: dtln.DenoiserHandle = dtln.dtln_create();

const inputAudio = new Float32Array(512);
const outputAudio = new Float32Array(512);

const isStarved: boolean = dtln.dtln_denoise(denoiser, inputAudio, outputAudio);

dtln.dtln_stop(denoiser);

Kapsamlı TypeScript örnekleri için example.ts dosyasına bakın.

🐳 Docker Kullanımı

Bu paketi Docker container'larında kullanırken, C++ runtime kütüphanelerini mutlaka yüklemelisiniz:

FROM node:18-slim

# dtln-rs için gerekli C++ kütüphanelerini yükle
RUN apt-get update && apt-get install -y \
    libc++-dev \
    libc++abi-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY package*.json ./
RUN npm install

COPY . .
CMD ["node", "index.js"]

Bu kütüphaneler olmadan şu hatayı alırsınız:

libc++.so.1: cannot open shared object file: No such file or directory

Tam Docker entegrasyon rehberi için DOCKER.md dosyasına bakın.


📊 Performans Benchmarkları

MacBook Pro M1 üzerinde gerçek dünya performansı:

| Ses Süresi | İşlem Süresi | Gerçek-zamanlı Faktör | |------------|--------------|----------------------| | 10.00s | 195ms | 0.019x ⚡ | | 7.06s | 132ms | 0.019x ⚡ | | 22.10s | 333ms | 0.015x ⚡ |

0.019x gerçek-zamanlı faktör, gerçek zamandan 55x daha hızlı demektir 🚀

📖 API Referansı

dtln_create()

Yeni bir DTLN denoiser instance'ı oluşturur.

Döndürür: Denoiser handle

Örnek:

const denoiser = dtln.dtln_create();

dtln_denoise(denoiser, inputSamples, outputSamples)

Ses örneklerini işler ve gürültüyü kaldırır.

Parametreler:

  • denoiser: dtln_create()'den dönen denoiser handle
  • inputSamples: Giriş sesi Float32Array (16kHz, mono, -1.0 to 1.0)
  • outputSamples: Temiz sesi alacak Float32Array (giriş ile aynı uzunlukta)

Döndürür: Boolean - işlemci gerçek zamandan yavaşsa true

Örnek:

const isStarved = dtln.dtln_denoise(denoiser, inputFrame, outputFrame);
if (isStarved) {
  console.warn('⚠️ İşlem gerçek zamandan yavaş');
}

dtln_stop(denoiser)

Denoiser instance'ını durdurur ve temizler. İşiniz bittiğinde mutlaka çağırın!

Parametreler:

  • denoiser: Durdurulacak denoiser handle

Örnek:

dtln.dtln_stop(denoiser);

🎛️ Ses Gereksinimleri

| Parametre | Değer | |-----------|-------| | Örnekleme Hızı | 16kHz (16000 Hz) | | Kanallar | Mono (1 kanal) | | Format | Float32Array | | Aralık | -1.0 to 1.0 | | Frame Boyutu | 512 örnek (32ms önerilir) |

🌐 WebRTC Entegrasyon Örneği

const dtln = require('dtln-rs');

class RealtimeDenoiser {
  constructor() {
    this.denoiser = dtln.dtln_create();
    this.frameSize = 512; // 16kHz'de 32ms
  }

  /**
   * Sesi gerçek zamanlı olarak işle
   * @param {Float32Array} audioData - Giriş sesi (16kHz mono)
   * @returns {Float32Array} Gürültüsü alınmış ses
   */
  process(audioData) {
    const output = new Float32Array(audioData.length);

    // 512 örneklik parçalar halinde işle
    for (let i = 0; i < audioData.length; i += this.frameSize) {
      const chunk = audioData.slice(i, Math.min(i + this.frameSize, audioData.length));
      const outChunk = new Float32Array(this.frameSize);

      // Son parça küçükse doldur
      const padded = new Float32Array(this.frameSize);
      padded.set(chunk);

      dtln.dtln_denoise(this.denoiser, padded, outChunk);
      output.set(outChunk.slice(0, chunk.length), i);
    }

    return output;
  }

  destroy() {
    dtln.dtln_stop(this.denoiser);
  }
}

// WebRTC'de kullanım
const denoiser = new RealtimeDenoiser();

audioContext.createScriptProcessor(512, 1, 1).onaudioprocess = (e) => {
  const input = e.inputBuffer.getChannelData(0);
  const output = e.outputBuffer.getChannelData(0);

  const clean = denoiser.process(input);
  output.set(clean);
};

// Temizlik
window.addEventListener('beforeunload', () => denoiser.destroy());

🛠️ Platform Desteği

| Platform | Durum | Kurulum | |----------|-------|---------| | macOS ARM64 (M1/M2/M3) | ✅ Prebuilt | npm install (Rust gerekmez) | | macOS x64 (Intel) | ✅ Prebuilt | npm install (Rust gerekmez) | | Linux x64 | ✅ Prebuilt | npm install (Rust gerekmez) | | Linux ARM64 | 🔨 Kaynaktan derleme | Rust toolchain gerekir | | Windows x64 | 🔨 Kaynaktan derleme | Rust + MSVC gerekir |

Kaynaktan Derleme

Platformunuz için önceden derlenmiş binary yoksa:

# Rust'ı yükleyin https://rustup.rs/
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Modülü derleyin
npm install

📦 İçindekiler

  • Prebuilt Binary'ler: macOS & Linux için kullanıma hazır
  • DTLN Modelleri: Quantized TensorFlow Lite modelleri (~4MB)
  • Kaynak Kodu: Tam Rust implementasyonu
  • Örnekler: Gerçek dünya kullanım örnekleri

🏗️ Mimari

┌─────────────────────────────────────────┐
│         Uygulamanız                     │
│         (Node.js / JavaScript)          │
└────────────────┬────────────────────────┘
                 │
                 ▼
┌─────────────────────────────────────────┐
│          dtln-rs (Native Addon)         │
│                                         │
│  ┌───────────────────────────────────┐ │
│  │   DTLN Motoru (Rust)              │ │
│  │  ┌──────────────┐ ┌─────────────┐│ │
│  │  │  Model 1     │ │  Model 2    ││ │
│  │  │  (Frekans)   │ │  (Zaman)    ││ │
│  │  └──────────────┘ └─────────────┘│ │
│  └───────────────────────────────────┘ │
│               │                         │
│               ▼                         │
│  ┌───────────────────────────────────┐ │
│  │   TensorFlow Lite (Static)        │ │
│  └───────────────────────────────────┘ │
└─────────────────────────────────────────┘

🧪 Testleri Çalıştırma

Gerçek ses örnekleri ile test edin:

# Simüle edilmiş ses ile örnek çalıştır
node example.js

# Gerçek WAV dosyaları ile test et (repo'da dahil)
node test-real-audio.js

🤝 Katkıda Bulunma

Katkılarınızı bekliyoruz! Sorun bildirimleri ve pull request'ler göndermekten çekinmeyin.

  1. Repository'i fork edin
  2. Feature branch'i oluşturun (git checkout -b feature/harika-ozellik)
  3. Değişikliklerinizi commit edin (git commit -m 'Harika özellik ekle')
  4. Branch'e push edin (git push origin feature/harika-ozellik)
  5. Pull Request açın

📄 Lisans

Bu proje MIT Lisansı altında lisanslanmıştır - detaylar için LICENSE dosyasına bakın.

🙏 Teşekkürler

Bu proje şu mükemmel çalışmalar üzerine inşa edilmiştir:

Rust ve Node.js topluluklarına mükemmel araçlar ve kütüphaneler için özel teşekkürler!

📞 Destek

🔗 Linkler


Rust ile ❤️ ile yapıldı 🦀

Faydalı bulduysanız bu repository'e ⭐ yıldız verin!