Voice Chat

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
waki
User
Beiträge: 133
Registriert: Dienstag 9. März 2010, 16:41

Hey,
ich habe einen einfachen Voice Chat geschrieben, erstmal wird nur in eine Richtung Sound übertragen. Mein Programm läuft einfach mit pyaudio und schick dann einfach per socket verbindung die daten zum client. Jedoch passiert das ganze schon so verzögert, wobei ich eim 16000 DSL habe, also sollte das schon reichen. Bei Skype, etc. funktioniert es doch auch, aber was macht Skype anderst? Wie kann ich das ganze Beschleunigen, damit nur eine minimale Verzögerung vorliegt?



gruß
lunar

@waki: Die Daten vor der Übertragung komprimieren?
waki
User
Beiträge: 133
Registriert: Dienstag 9. März 2010, 16:41

Jo, und wie mache ich das am geschicktesten?
lunar

Nun ja, eben mit irgendeinem „passenden“ Algorithmus zur Kompression von Audiodaten. Wenn Du davon so gar keine Ahnung hast, dann wirst Du nur mit Fragen hier im Forum nicht weit kommen, sondern schon ein bisschen Zeit und Eigenengagement in Recherche investieren.
waki
User
Beiträge: 133
Registriert: Dienstag 9. März 2010, 16:41

Welches wäre denn das am Besten dafür geeignete Format?
BlackJack

@waki: Das welches Du durch ein bisschen Zeit, Eigenengagement, und Recherche herausfindest ohne hier zu fragen. ;-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nun, die typische wahl für Voice over IP war vor einiger Zeit Speex. Dieses wurde inzwischen wohl durch CELT ersetzt welches mit dem Skype-eigenen SILK dann zusammen von der IETF zu verabschiedende Opus bilden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
waki
User
Beiträge: 133
Registriert: Dienstag 9. März 2010, 16:41

Herzlichen Dank, Speex funktioniert shcon ziemlich gut, zu CELT hab ich leider nichts wirkliches in Verbindung mit Python gefunden. Ich hätte noch eine andere Frage: ist es möglich das aufgenommene lauter zu machen? Oder ist es möglich mit Python die Mikrofon Aufnahmelautstärke zu verändern?

Wäre aac eigentlich eine alternative zu speex? Hab schon mehere Radiosender gesehen welche damit streamen...

Herzlichen Dank schonmal
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

waki hat geschrieben:Herzlichen Dank, Speex funktioniert shcon ziemlich gut, zu CELT hab ich leider nichts wirkliches in Verbindung mit Python gefunden.
Also ein Binding mit ctypes zu schreiben sollte eigentlich das geringste Problem sein, denke ich.
waki hat geschrieben:Wäre aac eigentlich eine alternative zu speex? Hab schon mehere Radiosender gesehen welche damit streamen...
Nein. Denn wenn du freie Encoder suchst hast du eigentlich nur FAAC und der ist, hrm, naja. Aber was noch viel mehr dagegen spricht ist, dass AAC wohl kaum den Latenz-Anforderungen entspricht. Deswegen nutzt man für Voice auch kein Vorbis sondern CELT (welches womöglich auch Vorbis ablösen kann).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@waki: AAC hat ein Patentproblem -- Du darfst nur Encoder verwenden, für die entsprechende Lizenzgebühren abgeführt wurden.
lunar

@BlackJack: Naja, noch ist das ja hierzulande egal ... und ich gehe jetzt per se erst einmal nicht davon aus, dass der OP mit seinem Programm den großen internationalen Wurf landen wird (und selbst dann wäre es per se erst mal egal).
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Aber man muss ja nicht potentiellen Nutzern eventuelle patentrechtliche Schwierigkeiten noch zusätzlich andrehen. Es reicht ja schon das AAC aus anderen Gründen wegfällt ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
waki
User
Beiträge: 133
Registriert: Dienstag 9. März 2010, 16:41

http://www.celt-codec.org/downloads/
Ok, hab jetzt gerade nach einer .dll oder so gesucht, finde auf der homepage jedoch nur eine tar.gz mit jede Menge Dateien. Jedoch peil ich da jetzt gerade nicht ganz durch, wie ich das mit Windows und Python genau nutzen kann. Muss ich da etwas mit makefile machen oder kann ich mir da direkt ne Datei rausziehen? Hab in Tools celtenc.c und eine celtdec.c gefunden, kann ich die direkt ohne die anderen Dateien nutzen?
BlackJack

@waki: Wenn Du nicht weisst wie man den Quelltext übersetzt, dann würde ich die Finger davon lassen. Der Codec ist noch experimentell und das Datenformat ist auch noch nicht endgültig festgelegt und ändert sich von Version zu Version. Alle Teilnehmer brauchen also immer die passende Version der Bibliothek.

Wenn `speex` funktioniert, dann bleib doch erst einmal dabei. Du könntest das Programm ja so weit ausarbeiten, dass es später mehrere Codecs benutzen kann.
Antworten