TASE (텔레그램 오디오 검색 엔진)
Telegram을 기반으로 하는 매우 빠른 오디오 전체 텍스트 검색 엔진
이를 통해 사용자는 관련 없는 수많은 채널을 헤맬 필요 없이 진정한 관심이나 가치가 있는 정보를 빠르고 쉽게 찾을 수 있습니다. 고품질 오디오 파일에 대한 관련 정보로 연결되는 검색 결과를 사용자에게 제공합니다.
무엇이 TASE를 특별하게 만드는가?
TASE는 사용자의 대량 요청을 처리하는 성장하는 오픈 소스 전체 텍스트 오디오 검색 엔진 플랫폼입니다. Python 및 Telegram을 기반으로 하는 최신 주요 업데이트에는 Elasticsearch 및 ArangoDB를 기반으로 하는 고도로 추상화된 모듈식 디자인 패턴과 세계 각지에 위치한 다양한 서버의 병렬 클러스터를 지원하는 많은 새로운 기능이 도입되었습니다.
TASE 개요
- 오디오 파일을 위한 고급 전체 텍스트 검색 엔진
- 매우 빠른 오디오 파일 인덱서(벤치마크: 클라이언트당 하루 최소 400만 곡)
- 인덱서로 여러 병렬 클라이언트 지원
- 여러 서버의 분산 병렬 클러스터 지원(검색 및 인덱싱)(모든 오디오 파일, 그래프 및 문서 모델)
- 사용자 및 아이템 그래프
- 동적 URL
- 비동기식
- 관리 도구에 접근
- 다국어
- 오디오 파일 캐싱
- 간편한 구성 및 사용자 정의
- 친근한 표정과 느낌
TASE는 무료이며 앞으로도 그럴 것입니다. 도와주세요... 무료와 훌륭한 소프트웨어를 좋아하신다면 별점을 주세요! :스타::스타2:
설치 및 실행 방법
* 참고: 프로젝트를 실행하기 전에 구성 및 사용자 정의 섹션을 반드시 읽으십시오. TASE를 사용하는 방법에는 두 가지가 있습니다.
(*참고: 프로젝트를 실행하기 전에 tase.json 및 .env 파일을 구성해야 합니다) 저장소 복제
서비스 설정:
종속성을 수동으로 설치
- Elasticsearch(v8.3) 설치(지침)
- ArangoDB(v3.9.1) 설치(지침)
- RabbitMQ 설치(지침)
- Redis 설치(지침)
docker compose를 사용하여 실행
더 쉬운 방법(권장) (*참고: 프로젝트를 실행하기 전에 tase.json 파일을 구성해야 합니다) 도커 구성 -d
* 아직 docker compose를 설치하지 않았다면 설치하세요 (지침)
- * 아직 시를 설치하지 않았다면 설치하세요 (지침)
- tase 패키지에 있는 tase_client.py 파일을 실행하세요.
구성 및 사용자 정의
프로젝트를 실행하기 전에 TASE에서 구성 파일로 사용되는 루트 디렉터리의 tase.json 파일을 사용자 정의해야 합니다.
프로젝트를 실행하려면 봇이 작동하는 기본 정보를 제공해야 합니다. 예를 들어 자체 클라이언트를 실행하려면 텔레그램 봇 토큰과 텔레그램 클라이언트 인증 정보를 제공해야 합니다.
특징
개발자를 위한 기능
- 로캘에 새 언어 추가(Poedit 사용 권장)
- 기본 버튼 클래스에 추상 메소드를 구현하여 새로운 버튼과 기능(쿼리 및 인라인)을 쉽게 추가합니다.
- 그래프 모델 및 오디오 파일에 대한 실시간 시각화(Kibana, ArangoDB)
- 추상화 및 외관 디자인 패턴
다양한 기능
검색 엔진
- 직접 봇 검색을 통해 오디오 파일 검색
- @bot_name 멘션을 사용하여 그룹 및 비공개 채팅에서 오디오 파일을 검색하고 채팅으로 직접 보냅니다.
- 인라인 결과 목록을 표시하여 @bot_name 멘션을 사용한 실시간 검색
- 비공개, 그룹 채팅에서 바로 실시간 검색 가능
- 파일 이름, 연주자 이름, 오디오 이름을 기준으로 검색
- 메시지에 상위 10개의 관련 결과를 표시하고 더 많은 결과를 무제한으로 표시합니다. 인라인 목록으로 반환됨
- 다운로드하기 전에 인라인 목록에 있는 노래를 재생하세요.
- 불필요한 중복 DB 요청을 피하기 위해 검색된 오디오 파일을 캐시합니다.
- 결과의 동적 URL
- 소유자가 다운로드한 오디오 파일을 추적할 수 있습니다.
- 높은 정확성과 관련성
- 다양한 언어로 검색
- 소스 채널 이름과 파일 링크 표시
- 역방향 모드로 결과 정렬(하단에 더 관련성 높은 결과 만들기)
검색 예시 스크린샷
결과 오디오 예시 스크린샷
인덱싱 기능
- 낙관적인 방식으로 자동으로 새 채널을 찾습니다. (먼저 유효한 채널이라고 가정하고 나중에 색인을 시작하기 전에 유효성을 검사합니다.)
- 텍스트 및 캡션에서 추출
- "전달된 언급"에서 발췌
- 링크에서 추출
- 새 채널을 자동으로 색인화합니다.
- 이전 채널을 반복하고 이전 체크포인트에서 인덱싱을 재개합니다.
- 매우 빠른 인덱싱(클라이언트당 하루 최소 400만 곡)
- 채널을 분석하고 이를 바탕으로 점수(0~5)를 계산합니다.
- 오디오 파일 밀도(오디오 파일 비율
- 채널 활동(새 파일을 공유하는 빈도)
- 회원 수
- 텔레그램 서버에 의해 차단되는 것을 방지합니다
- 여러 Telegram 클라이언트를 사용한 병렬 인덱싱 지원
- 높은 수준의 충돌을 피하면서도 8자 정도로 짧게 유지하는 특정 방식으로 파일 ID를 해시합니다.
- 사용자와 채널 소유자는 "/index Channel_name"을 사용하여 특정 채널을 색인화하라는 요청을 보낼 수 있습니다.
- 추천 시스템 및 링크 예측 작업에 사용할 수 있는 사용자 및 오디오 파일에 대한 그래프를 실시간으로 구성합니다.
사용자 제한/제어 기능
- 거의 실시간으로 채널의 사용자 멤버십을 처리합니다.
- 회원 상태에 따라 사용자에 대한 제한 설정
- 비회원은 5개의 오디오 파일을 자유롭게 검색할 수 있으며, 검색된 오디오 파일을 받을 때까지 1분 동안 기다려야 합니다.
- 비회원은 채팅 내 직접 검색에 제한이 있습니다.
사용자 인터페이스
- 사용자 가이드
- 다양한 메뉴(홈, 도움말, 재생 목록 등)
- 사용자의 작업 과정을 쉽게 해주는 각 부분별 키보드
- 다국어 봇 - 현재 지원됨:
- ?? 영어
- ?? 스페인 사람
- ?? 러시아인
- ?? 아라비아 말
- ?? 포르투갈 인
- ?? 힌디 어
- ?? 독일 사람
- ?? 쿠르드어(소라니어)
- ?? 쿠르드어(쿠르만지어)
- ?? 네덜란드 사람
- ?? 이탈리아 사람
- ?? 페르시아 인
- 일주일 이상 또는 2주 이상 활동하지 않은 경우 사용자의 활동에 따라 사용자에게 보내는 인사말 메시지
- 홈 키보드의 기록 버튼을 눌러 스크롤 가능한 인라인 목록을 통해 각 사용자의 검색 기록을 표시합니다.
- 아름답고 생생한 사용자 인터페이스(메시지 및 이모티콘)
재생목록
- 사용자는 무제한 재생 목록을 갖고 각 재생 목록에 무제한 오디오 파일을 저장할 수 있습니다.
- 사용자는 재생목록 메타데이터를 편집할 수 있습니다.
- 사용자는 저장된 오디오 파일을 편집할 수 있습니다.
메인 메뉴 스크린샷
관리 기능
- 실시간 그래프 시각화(ArangoDB 대시보드 지원)
- 실시간 색인 오디오 파일 시각화(Kibana 대시보드 지원)
* Kibana는 로그 및 시계열 분석, 애플리케이션 모니터링, 운영 인텔리전스 사용 사례에 사용되는 데이터 시각화 및 탐색 도구입니다. 히스토그램, 선 그래프, 파이 차트, 히트 맵, 내장 지리공간 지원 등 강력하고 사용하기 쉬운 기능을 제공합니다.
다른
- 매우 빠르다
- 문서는 코드(docstring)에 제공됩니다.
- 데이터베이스 관련 예외를 처리합니다.
- 다중 스레드 검색(여러 요청을 비동기적으로 검색)
- RTL 텍스트를 완벽하게 처리합니다.
기술 스택
TASE 개발에 사용되는 주요 도구 및 기술은 다음과 같습니다.
- 엘라스틱서치
- 아랑고DB
- 피로그램
- 파이썬 get_text
- 셀러리
- RabbitMQ
- 레디스
- 피단틱
- 진자
기부 요청
여러분의 전문성과 열정을 환영합니다!
텔레그램 오디오 검색 엔진에 기여하는 방법:
- 코드 작성
- 풀 요청 검토
- 튜토리얼, 프리젠테이션, 문서 및 기타 교육 자료 개발
- 문서 및 Readme 콘텐츠 번역
우리는 귀하의 기여를 사랑하며 멘토링과 지원을 제공하기 위해 최선을 다합니다. 해결해야 할 문제를 찾고 있다면 문제를 살펴보세요.
문제
코드에 문제가 발생하면 여기에 보고해 주세요. 더 좋은 방법은 Github 에서 저장소를 포크하거나 끌어오기 요청을 생성하는 것입니다.
미래의 일
도움이 되셨다면 추천 부탁드립니다
특허
TASE는 Apache 라이센스 버전 2.0에 따라 라이센스가 부여됩니다. 전체 라이선스 텍스트는 LICENSE를 참조하세요.