Timeside: กรอบการประมวลผลเสียงที่ปรับขนาดได้และเซิร์ฟเวอร์ที่เขียนใน Python
Timeside เป็นเฟรมเวิร์ก Python ที่เปิดใช้งานการวิเคราะห์เสียงระดับต่ำและระดับสูงการถ่ายภาพการแปลงรหัสการสตรีมและการติดฉลาก API ระดับสูงของมันได้รับการออกแบบมาเพื่อเปิดใช้งานการประมวลผลที่ซับซ้อนในชุดข้อมูลขนาดใหญ่มากของสินทรัพย์เสียงหรือวิดีโอใด ๆ ที่มีสถาปัตยกรรมปลั๊กอินและแบ็กเอนด์ที่ปรับขนาดได้อย่างปลอดภัย
การแนะนำ
เมื่อจำนวนแอพพลิเคชั่นเสียงและชุดข้อมูลออนไลน์เพิ่มขึ้นจึงเป็นสิ่งสำคัญสำหรับนักวิจัยและวิศวกรที่จะสามารถสร้างต้นแบบและทดสอบอัลกอริทึมของตัวเองได้เร็วที่สุดเท่าที่จะเป็นไปได้ในแพลตฟอร์มและ USEcases ต่างๆเช่นดนตรีคอมพิวเตอร์และบริการสตรีมมิ่ง ในอีกด้านหนึ่งผู้ให้บริการเนื้อหาและผู้ผลิตจำเป็นต้องปรับปรุงประสบการณ์ผู้ใช้บนแพลตฟอร์มของพวกเขาด้วยข้อมูลเมตามากขึ้นตามประวัติทางวัฒนธรรม แต่ยังวิเคราะห์คุณสมบัติเสียง การเติบโตของข้อมูลเมตาเหล่านั้นแบบซิงโครนัสกับเพลงที่เผยแพร่บนอินเทอร์เน็ตหมายความว่าการวิเคราะห์และระบบจัดเก็บข้อมูลสามารถอัปเดตปรับขนาดและปรับใช้ได้อย่างง่ายดาย
Timeside ได้รับการพัฒนาในแง่นี้เพื่อเสนอบริการประมวลผลเสียงออนไลน์ มันมีให้:
- โมดูลหลัก สำหรับ Python ในการทำงานจากเชลล์หรือโปรแกรมที่ใช้ Python อื่น ๆ
- เว็บเซิร์ฟเวอร์ สำหรับเว็บที่มี API แบบพักผ่อนที่สร้างขึ้นบนโมดูลหลักเพื่อให้นักพัฒนาเว็บสามารถฝังบริการการประมวลผลระยะไกลลงในแอปพลิเคชันของตนเองได้อย่างง่ายดาย
- SDK สำหรับ JavaScript และขึ้นอยู่กับ OpenAPI เพื่อพัฒนาแอปพลิเคชันของบุคคลที่สามที่ใช้ Server API ได้อย่างง่ายดาย
ใช้เคส
- การประมวลผลเสียงแบบอะซิงโครนัส (การกรองการวิเคราะห์คุณสมบัติการเรียนรู้ของเครื่อง ฯลฯ )
- การจัดสรรข้อมูลที่ปรับขนาดและปลอดภัยการประมวลผลและการเข้าถึงข้อมูล
- การสร้างต้นแบบปลั๊กอินเสียง
- การสร้างภาพด้วยเสียง
- การแปลงรหัสตามความต้องการและการสตรีมผ่านเว็บ
- เพิ่มเครื่องเล่นเสียงที่ใช้ร่วมกัน
- การแบ่งส่วนอัตโนมัติและการติดฉลากด้วยตนเองซิงโครไนซ์กับเหตุการณ์เสียง
คุณสมบัติ
- ทำ แบบอะซิงโครนัสและการประมวลผลเสียงที่รวดเร็วด้วย Python
- ถอดรหัส เฟรมเสียงจากรูปแบบเสียงหรือสื่อวิดีโอ ใด ๆ เป็นอาร์เรย์ numpy
- วิเคราะห์ เนื้อหาเสียงด้วยไลบรารีการแยกคุณสมบัติเสียงที่ทันสมัยเช่น Aubio, Yaafe และ VAMP รวมถึงโปรเซสเซอร์ Python บริสุทธิ์บางตัว
- เห็น ภาพเสียงด้วยรูปคลื่นแฟนซีสเปคโตรรากรัมและกราฟเจอร์เย็นอื่น ๆ
- TransCode ข้อมูลเสียงในรูปแบบสื่อต่างๆและสตรีมผ่านเว็บแอพ
- Serialize ข้อมูลการวิเคราะห์คุณสมบัติผ่านรูปแบบพกพาต่างๆ
- จัดหา แหล่งเสียงจาก plateform เช่น YouTube หรือ Deezer
- ส่ง การวิเคราะห์และรหัสผ่านบนแทร็กที่ให้หรืออัปโหลดผ่านเว็บผ่าน REST API
- การเล่น และ โต้ตอบ ตามความต้องการ ผ่านผู้เล่น HTML5 ระดับสูงระดับสูง
- ดัชนี แท็ก และ คำอธิบาย ประกอบเสียงที่มีความหมายเมตาดาต้าความหมาย (ดู telemeta ซึ่งฝังไทม์ไซด์)
- ปรับใช้ และ ปรับขนาด กลไกการประมวลผลเสียงของคุณเองผ่านโครงสร้างพื้นฐานใด ๆ
เงินทุนและการสนับสนุน
ในการให้ทุนโครงการและดำเนินการต่อกระบวนการพัฒนาอย่างรวดเร็วของเราต่อไปเราต้องการการสนับสนุนที่ชัดเจนของคุณ ดังนั้นหากคุณใช้ไทม์ไซด์ในการผลิตหรือแม้กระทั่งในการพัฒนาหรือการตั้งค่าการทดลองโปรดแจ้งให้เราทราบโดย:
ขอบคุณสำหรับความช่วยเหลือและการสนับสนุน!
ข่าว
1.1
- หลัก:
- ใช้ตัวถอดรหัส Aubio ที่ใช้ LIBAV โดยค่าเริ่มต้น (เสียงที่เร็วที่สุดเป็นตัวแปลงอาร์เรย์ NumPy บนโลกใบนี้!)
- เพิ่มเครื่องวิเคราะห์ที่ใช้ VAMP และปลั๊กอินบางอย่างเช่น Vampflatness, Vampcrest, Vamptempo, Vamptuning, Vampspectralcentroid, Vampspectralkurtosis และ Vampspectralslope
- เซิร์ฟเวอร์:
- แก้ไขปัญหาการประมวลผลแบบอะซิงโครนัสจำนวนมาก: ตอนนี้ทำทุกการประมวลผลล่วงหน้าการประมวลผลและงานหลังการประมวลผลผ่านผู้ปฏิบัติงานรวมถึงการดึงกระแสข้อมูลจาก YouTube
- เพิ่มการตรวจสอบกระบวนการตาม WebSocket
- รูปคลื่นประมวลผลโดยอัตโนมัติบน item.save ()
- ทำให้ uuid มีเอกลักษณ์จริงๆ
- การสั่งซื้อแบบจำลองใหม่
- ปรับปรุงการทดสอบหน่วย
1.0
- เซิร์ฟเวอร์ refactoring:
- กระบวนการเสียงทำงานบนรายการ (โมเดลของ REST API Track)
- เครื่องมือมุมมองโมเดลและ serializers หลายอย่าง
- สคีมาของ REST API ในข้อมูลจำเพาะ OpenAPI 3 และการสร้างใหม่อัตโนมัติ
- ย้ายคอร์และเซิร์ฟเวอร์จาก Python 2.7 เป็น 3.7
- อัพเกรด Django เป็น 2.2, Django Rest Framework เป็น 3.11, คื่นฉ่ายเป็น 4.4
- เพิ่มตัวถอดรหัสที่ใช้ Aubio
- เพิ่มการกำหนดเวอร์ชันของ Core และ Processors และกระบวนการเซิร์ฟเวอร์ 'เวลาทำงาน
- จัดกลุ่มการพึ่งพาทั้งหมดเกี่ยวกับข้อกำหนดของ PIP เพื่อลบการใช้คอนดา
- เพิ่มคลาสผู้ให้บริการเป็นองค์ประกอบหลัก API และเป็นรุ่น REST API
- เพิ่มปลั๊กอินผู้ให้บริการ Deezer-Preview, Deezer-Complete และ YouTube
- ปรับปรุงการทดสอบหน่วยเซิร์ฟเวอร์
- เพิ่มการรับรองความถูกต้องของ JWT บน REST API
- แก้ไขข้อบกพร่องต่างๆ
- เพิ่ม Core, Server และคนงานเข้าสู่ระบบ
0.9
- อัพเกรดการพึ่งพา Python ทั้งหมด
- เพิ่ม VAMP, Essentia, Yaafe, Librosa, Pytorch, Tensorflow Libs และ Wrappers
- เพิ่มปลั๊กอินการวิเคราะห์บางอย่าง (ความไม่ลงรอยกันของ Essentia, VAMP Constant Q, VAMP Tempo, VAMP General Wrapper, Waafe General Wrapper)
- เพิ่มการจัดการพารามิเตอร์โปรเซสเซอร์
- เพิ่มการสืบทอดโปรเซสเซอร์
- ปรับปรุงเครื่องเล่น HTML5 ด้วยการสตรีมข้อมูลที่ชาญฉลาด
- ปรับปรุง REST API และ serialzers ต่างๆ
- ปรับปรุงการทดสอบหน่วย
- แก้ไขข้อบกพร่องต่างๆ
0.8
- เพิ่มการสนับสนุน Docker สำหรับการติดตั้งทันที สิ่งนี้ช่วยให้สามารถเรียกใช้ไทม์ไซด์ได้บนแพลตฟอร์มระบบปฏิบัติการ ใด ๆ !
- เพิ่มการสนับสนุนโน้ตบุ๊ก Jupyter สำหรับการสร้างต้นแบบการทดลองและการแบ่งปันที่ง่าย (ดูตัวอย่างในเอกสาร)
- เพิ่มเว็บเซิร์ฟเวอร์ทดลองและ REST API ตามเฟรมเวิร์ก Django Rest, Redis และ Celery ตอนนี้ให้บริการเซิร์ฟเวอร์การประมวลผลเสียงเว็บจริงที่มีความสามารถในการปรับขนาดสูงด้วย Docker (การจัดกลุ่ม) และคื่นฉ่าย (การประมวลผลหลายครั้ง)
- เริ่มการพัฒนาส่วนต่อประสานผู้เล่นใหม่ด้วย Angular และ Wavesjs
- การทำความสะอาดไฟล์ JS ขนาดใหญ่ โปรดใช้ Bower เพื่อรับการพึ่งพา JS ทั้งหมดตามที่ระบุไว้ในการตั้งค่า
- เพิ่มการส่งออกข้อมูลเมตาไปยังไฟล์คำอธิบายประกอบ Elan
- แก้ไขและปรับปรุงโครงสร้างข้อมูลบางอย่างในคอนเทนเนอร์ผลการวิเคราะห์
- แก้ไขข้อผิดพลาดมากมาย
0.7.1
- แก้ไขเวอร์ชัน Django เป็น 1.6.10 (ซิงค์กับ Telemeta 1.5)
0.7
- รหัส refactoring:
- สร้างโมดูลใหม่ Timeside.plugins และย้ายโปรเซสเซอร์ในนั้น: timeside.plugins.decoder, Analyzer, Timeside.plugins.encoder, timeside.plugins.fx
- คำเตือน: ในการจัดการโครงสร้างแพ็คเกจเนมสเปซอย่างถูกต้องโมดูลหลักไทม์ไซด์คือตอนนี้ไทม์ไซด์และรหัสควรเริ่มต้นด้วยการนำเข้าไทม์ไซด์
- Timeside.plugins ตอนนี้เป็นแพ็คเกจเนมสเปซที่ทำให้ปลั๊กอินภายนอกสามารถเสียบเข้ากับ Timeside โดยอัตโนมัติ (ดูตัวอย่างเช่น Timeside-Diadems) ตอนนี้ทำให้ Timeside เป็นโฮสต์ปลั๊กอิน จริง ใช่!
- ปลั๊กอิน Dummy Timeside จะถูกจัดเตรียมไว้สำหรับการเริ่มต้นการพัฒนาที่ง่าย
- ย้ายเครื่องวิเคราะห์ทั้งหมดที่พัฒนาโดยพันธมิตรของโครงการ Diadems ไปยังที่เก็บใหม่: Timeside-Diadems
- การแก้ไขจำนวนมากสำหรับการประมวลผลที่ดีขึ้นโดย Travis-CI
- เพิ่มไฟล์ DOX เพื่อทดสอบอาคาร Docker อย่างต่อเนื่องในการแจกแจงต่างๆ
สำหรับข่าวเก่ากรุณาเยี่ยมชม: https://github.com/ircam-wam/timeside/blob/master/news.rst
เอกสาร
- เอกสารฉบับเต็ม: https://timeside.ircam.fr/docs/
- เซิร์ฟเวอร์ REST API: https://timeside.ircam.fr/api/docs/
- สไลด์: https://ircam-wam.github.io/timeside-slides/#1
- บทช่วยสอนหลัก: https://timeside.ircam.fr/docs/Tutorials/
- สมุดบันทึกบางเล่ม: https://github.com/ircam-wam/timeside/tree/master/docs/ipynb
- สมุดบันทึกรุ่นเก่าบางเล่ม: http://mybinder.org/repo/thomasfillon/timeside-demos
- สิ่งพิมพ์:
- https://github.com/parisson/Telemeta-doc
- https://github.com/ircam-wam/timeside-papers
- ผู้เล่น UI V2: https://github.com/ircam-wam/timeside-player
- คู่มือผู้เล่น UI V1: https://github.com/ircam-wam/timeside/wiki/ui-Guide
- ผู้เล่น ui v1 ตัวอย่าง: http://archives.crem-cnrs.fr/archives/items/cnrsmh_e_2004_017_001_01/
ติดตั้ง
ขอบคุณ Docker ตอนนี้ Timeside พร้อมใช้งานอย่างสมบูรณ์เป็นองค์ประกอบของ Docker พร้อมที่จะทำงาน องค์ประกอบที่อิงกับนักเทียบท่ารวมแอปพลิเคชั่นที่ทรงพลังและเฟรมเวิร์กที่ทันสมัยนอกกรอบเช่น: Python, Numpy, Jupyter, Gstreamer, Django, คื่นฉ่าย, PostgreSQL, Redis, UWSGI, Nginx และอีกมากมาย
ก่อนอื่นให้ติดตั้ง Docker และ Docker Compose
จากนั้นโคลนไทม์ไซด์และเริ่มต้น:
git clone-recursive https://github.com/ircam-wam/timeside.git
ซีดีไทม์ไซด์
Docker เขียนขึ้น -d
แค่ไหน! ตอนนี้โปรดไปที่ : ref: `ส่วนอินเทอร์เฟซผู้ใช้ ' เพื่อดูวิธีการใช้งาน
บันทึก
เพื่อรับการสนับสนุนทางเทคนิคโปรดไปถึงทีมพัฒนา หากคุณต้องการใช้ไทม์ไซด์ นอก อิมเมจนักเทียบท่าโปรดดูกฎของ DockerFile ซึ่งขึ้นอยู่กับระบบที่มีความเสถียรของ Debian เราจะไม่ให้การสนับสนุนฟรีใด ๆ ใน usecase paticular นี้นอกคอนเทนเนอร์ Docker ดั้งเดิม
ผู้สนับสนุนและพันธมิตร
- Ircam (ปารีสฝรั่งเศส)
- Parisson (ปารีสฝรั่งเศส)
- CNRS: ศูนย์วิจัยวิทยาศาสตร์แห่งชาติ (ฝรั่งเศส)
- Huma-num: อุปกรณ์ข้อมูลขนาดใหญ่สำหรับมนุษยศาสตร์ดิจิทัล (CNRS, ฝรั่งเศส)
- Crem: ศูนย์วิจัยชาติพันธุ์วิทยาแห่งชาติฝรั่งเศส (ฝรั่งเศส)
- Université Pierre et Marie Curie (UPMC Paris, ฝรั่งเศส)
- ANR: Agence Nationale de la recherche (ฝรั่งเศส)
- MNHN: พิพิธภัณฑ์แห่งชาติ D'Histoire Naturelle (ปารีส, ฝรั่งเศส)
- C4DM: ศูนย์ดนตรีดิจิตอลมหาวิทยาลัย Queen Mary (ลอนดอนสหราชอาณาจักร)
- NYU Steinhardt: วิชาชีพดนตรีและศิลปะการแสดง, มหาวิทยาลัยนิวยอร์ก (นิวยอร์ก, สหรัฐอเมริกา)
โครงการที่เกี่ยวข้อง
- Telemeta: เปิดแพลตฟอร์มเสียงเว็บ
- คลังเก็บเสียงของ CNRS, Crem และ "Musée de l'Homme" ในปารีส, ฝรั่งเศส
- Diadems สนับสนุนโดย ANR
- Dacaryh, วิทยาศาสตร์ข้อมูลเพื่อการศึกษา Calypso-Rhythm ผ่านประวัติศาสตร์
- kamoulox ออนไลน์ unmixing ของคลังเก็บประวัติศาสตร์ขนาดใหญ่
- NYU+CREM+PARISSON: การวิเคราะห์ดนตรีอาหรับจากฐานข้อมูล CREM เต็มรูปแบบ
- วาซาบิ: ความหมายของเว็บเสียงที่รวมอยู่ในเบราว์เซอร์สำหรับการจัดทำดัชนีซึ่งได้รับการสนับสนุนจาก ANR
- Timeside-Player V2
- Timeside-Sdk-Js
การอ้างอิง
- Aline Menin, Michel Buffa, Maroua Tikat, Benjamin Molinet, Guillaume Pellerin, Laurent Pottier, Franck Michel, & Marco Winckler (2022, 28 มิถุนายน) การสร้างภาพข้อมูลที่เพิ่มขึ้นและหลายรูปแบบของแผ่นงาน: สำรวจฐานความรู้ดนตรีวาซาบิ การประชุม Audio Web 2022 (WAC 2022), เมืองคานส์, ฝรั่งเศส https://doi.org/10.5281/zenodo.6767530
- Guillaume Pellerin และ Paul Brossier (2022) Timeside API เป็นบริการเว็บประมวลผลเสียง [ชุดข้อมูล] การประชุม Audio Web 2022 (WAC 2022), เมืองคานส์, ฝรั่งเศส Zenodo https://doi.org/10.5281/zenodo.6769477
- Fillon และ G. Pellerin แพลตฟอร์มเว็บที่ทำงานร่วมกันสำหรับการจัดการและการวิเคราะห์ที่เก็บถาวรเสียง ในการประชุม Audio Web Audio ครั้งที่ 3, ลอนดอน, หน้า 43. มหาวิทยาลัย Queen Mary แห่งลอนดอน, สิงหาคม 2017
ลิขสิทธิ์
- ลิขสิทธิ์ (C) 2019, 2023 IRCAM
- ลิขสิทธิ์ (C) 2006, 2023 Guillaume Pellerin
- ลิขสิทธิ์ (c) 2022, 2023 Guillaume Piccarreta
- ลิขสิทธิ์ (c) 2010, 2022 Paul Brossier
- ลิขสิทธิ์ (c) 2020, 2021 Romain Herbelleau
- ลิขสิทธิ์ (c) 2019, 2020 Grandry Antoine
- ลิขสิทธิ์ (C) 2006, 2019 Parisson Sarl
- ลิขสิทธิ์ (c) 2013, 2017 Thomas Fillon
- ลิขสิทธิ์ (c) 2013, 2014 Maxime Lecoz
- ลิขสิทธิ์ (c) 2013, 2014 David Doukhan
- ลิขสิทธิ์ (c) 2006, 2010 Olivier Guilyardi
ใบอนุญาต
Timeside เป็นซอฟต์แวร์ฟรี: คุณสามารถแจกจ่ายใหม่และ/หรือแก้ไขภายใต้ข้อกำหนดของใบอนุญาตสาธารณะ GNU Affero ทั่วไปที่เผยแพร่โดย Free Software Foundation ไม่ว่าจะเป็นเวอร์ชัน 3 ของใบอนุญาตหรือ (ตามตัวเลือกของคุณ) รุ่นใหม่ ๆ
Timeside มีการแจกจ่ายด้วยความหวังว่ามันจะมีประโยชน์ แต่ไม่มีการรับประกันใด ๆ โดยไม่มีการรับประกันโดยนัยเกี่ยวกับความสามารถในการค้าหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูใบอนุญาตสาธารณะ GNU Affero ทั่วไปสำหรับรายละเอียดเพิ่มเติม
อ่านไฟล์ license.txt สำหรับรายละเอียดเพิ่มเติม