spotify / echoprint-server: serveur pour le système d'empreinte digitale audio Echoprint – Serveur d’impression

Author: Titanfall —

Short summary: Une bibliothèque C, avec un module d’extension Python et des liaisons Java, pour indexation rapide et interrogation des données echoprint. Installation La bibliothèque C autonome est construite avec CMake. Cette étape est obligatoire pour utiliser les liaisons Java (mais pas pour le Python). Pour construire le module d’extension Python, exécutez installation de python.py install. Usage […]

Quick overview

Site
Tutos GameServer
Canonical URL
https://tutos-gameserver.fr/2019/10/08/spotify-echoprint-server-serveur-pour-le-systeme-dempreinte-digitale-audio-echoprint-serveur-dimpression/
LLM HTML version
https://tutos-gameserver.fr/2019/10/08/spotify-echoprint-server-serveur-pour-le-systeme-dempreinte-digitale-audio-echoprint-serveur-dimpression/llm
LLM JSON version
https://tutos-gameserver.fr/2019/10/08/spotify-echoprint-server-serveur-pour-le-systeme-dempreinte-digitale-audio-echoprint-serveur-dimpression/llm.json
Manifest
https://tutos-gameserver.fr/llm-endpoints-manifest.json
Estimated reading time
5 minutes (261 seconds)
Word count
867

Key points

Primary visual

spotify / echoprint-server: serveur pour le système d'empreinte digitale audio Echoprint

 – Serveur d’impression
Main illustration associated with the content.

Structured content

Une bibliothèque C, avec un module d’extension Python et des liaisons Java, pour indexation rapide et interrogation des données echoprint. Installation La bibliothèque C autonome est construite avec CMake. Cette étape est obligatoire pour utiliser les liaisons Java (mais pas pour le Python). Pour construire le module d’extension Python, exécutez installation de python.py install. Usage Le reste de ce fichier documente l'utilisation de serveur echoprint via le module d’extension Python, à travers un ensemble de scripts pratiques le poubelle/ annuaire. Pour les liaisons Java, veuillez vous référer à la UsageExample.java fichier. Le générateur de code echoprint, utilisé pour convertir des fichiers audio en Les chaînes echoprint, peuvent être trouvées ici: echoprint-codegen. ATTENTION La bibliothèque utilise un format binaire personnalisé pour la vitesse. À ce point, L'ENVIRONNEMENT N'EST PAS CONTROLE donc déplacer des fichiers d'index entre les machines avec différentes architectures pourrait causer des problèmes. Le code a été testé sur petit endian Machines. Le code Java permettant de créer des index suppose explicitement peu Endian architecture. echoprint-decode Convertir une chaîne de code en sortie par echoprint-codegen dans le liste correspondante des codes représentés sous forme d'entiers séparés par des virgules. Usage: echoprint-codegen chanson.ogg> codegen_output.json cat codegen_output.json | jq -r '.[0].code '| echoprint-decode> codes.txt

codes.txt ressemblera: 150555,1035718,621673,794882,40662,955768,96899,166055, ... Ce script affiche uniquement les codes echoprint, pas les compensations. jq est un outil de ligne de commande pour traiter les chaînes JSON, il peut être trouvé ici. echoprint-inverted-index Prend une série de chaînes echoprint (une par ligne) et un chemin de sortie. Écrit un index compact sur le disque. Usage: chat ... | ./echoprint-inverted-index index.bin

index.bin le format est binaire, voir les détails d’implémentation ci-dessous. Si plus de 65 535 chansons sont indexées, la sortie sera divisée en blocs avec le schéma de nommage suivant: index.bin_0000 index.bin_0001 ...

Éventuellement le -je switch commute le format d'entrée sur un liste de codes entiers séparés par des virgules (une chanson par ligne). echoprint-inverted-query Prend une série de chaînes echoprint (une par ligne) et une liste d’index des blocs. Pour chaque requête, les résultats en sortie sur stdout sont codés en json objets. Usage: chat ... | ./echoprint-inverted-query index-file-1 [index-file-2 ...]

où l'entrée est une chaîne echoprint par ligne; Chaque ligne de sortie ressemble à ceci: {   "résultats":[            "index": 0,       "score": 0,69340412080287933,     ,            "index": 8,       "score": 0.56301175890117883,     ,            "index": 120,       "score": 0.3182627242477954626,     ,     ...

le indice champ représente la position de la chanson correspondante dans le indice. Éventuellement le -je switch commute le format d'entrée sur un liste de codes entiers séparés par des virgules (une chanson par ligne). Service REST le echoprint-rest-service Le script écoute les requêtes POST (par par défaut sur le port 5678), avec une chaîne echoprint comme echoprint paramètre. le test-rest.sh montre comment interroger en utilisant boucle. La demande est faite à hôte: requête / avec un des

jaccard set_int set_int_norm_length_first

Usage: echoprint-rest-service index-file-1 [index-file-2 ...]

L'option --ids-file accepte un chemin vers un fichier texte où chaque La ligne représente un identifiant pour la piste indexée en conséquence dans le répertoire. indice. Si spécifié, les résultats retournés auront un identifiant champ. Exemple: interrogation audio En supposant 0005dad86d4d4c6fb592d42d767e117f.ogg est dans le courant répertoire, coupons-le de 00h30 à 16h30 et ré-encodez-le en tant que 128 kbps mp3 (pour montrer que echoprint est robuste aux modifications du fichier): ffmpeg -i 0005dad86d4d4c6fb592d42d767e117f.ogg -s 30 -t 240 0005dad86d4d4c6fb592d42d767e117f_cut_lowrate.mp3

Exécutez le codegen echoprint, extrayez la chaîne echoprint: ../echoprint-codegen/echoprint-codegen     0005dad86d4d4c6fb592d42d767e117f_cut_lowrate.mp3     | jq -r '.[0].code '     > 0005dad86d4d4c6fb592d42d767e117f_cut_lowrate.echoprint```

Interrogez le service: curl -s --data     echoprint = `cat 0005dad86d4d4c6fb592d42d767e117f_cut_lowrate.echoprint` : 5678 / requête

Les résultats devraient être similaires à

  "résultats": [ "id": "0005dad86d4d4c6fb592d42d767e117f", "index": 0, "score": 0.34932565689086914 , "id": "ee59c151d679413a80ac4e49ac92c662", "index": 698096, "score": 0.033668458461761475 , "id": "026526e6a02648668ff9f410faab15be", "index": 312466, "score": 0.015930989757180214 , ... ]

Détails d'implémentation Similarité La similarité entre deux echoprints est calculée sur leur sac de mots représentations. Cela signifie que les décalages des codes ne sont pas pris en compte, pas plus que les multiplicités des codes. Format binaire d'index inversé L’index inversé est sérialisé en plusieurs des blocs, chacun étant un vidage de la mémoire de la EchoprintInvertedIndexBlock struct défini dans le En tête de fichier. Licence 📝 Le projet est disponible sous la licence Apache 2.0. Contribuant 📬 Les contributions sont les bienvenues, consultez le document CONTRIBUTING.md pour plus d'informations.

Click to rate this post! [Total: 0 Average: 0]

Topics and keywords

Themes: Serveur d'impression

License & attribution

License: CC BY-ND 4.0.

Attribution required: yes.

Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json

LLM Endpoints plugin version 1.1.2.