IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

[Electronique] Comment faire du VoIP ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut [Electronique] Comment faire du VoIP ?
    Bonjour,

    Je vais bientot me lancer dans le VoIP. Le but du jeux est d'avoir un PC d'un coté et un systeme embarqué ( PIC18FXXX de microchip avec pile TCP/IP...) de l'autre.

    Or je ne sais pas du tout par où commencer. Je sais comment charger une page web depuis mon serveur embarqué etc.... Mais échanger de la voix par la liaison IP me semble beaucoup moins clair autant au niveau hard que soft....

    Merci d'avance pour votre aide
    Stay a while and listen...

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 68
    Points : 66
    Points
    66
    Par défaut
    Il fut un temps ou j'avais tenté ceci avec BASS, transférer la voix c'est simple, mais en half duplex ou full duplex sa devient plus dur, j'avait pensé à des streams de 1 seconde ou moins se relayant, mais pas eu l'envie de continuer et je suis persuadé qu'il y a plus simple.

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Je pense que tu devrais jeter un oeil du côté de DirectSound. Sous Windows, c'est un accès direct au hardware (la carte son). Cela permet de faire un enregistrement et une (ou plusieurs) restitution en simultanné, à condition que ta carte son supporte le full duplex (2 canaux dma). Voici un petit article où tu trouveras les sources pour intégrer DirectSound dans un projet Delphi, en particulier, une démo d'un vumètre (enregistrement en temps réel) et une démo pour le mixage de sample en temps réel également. Il suffit de lancer l'éxécution de ces 2 programmes pour vérifier qu'il est possible d'enregistrer et de lire un sample en simultanné :

    http://sub0.developpez.com

    ps: Je ne comprend en quoi l'interface électronique est utile dans ce projet...


    Lien tout en bas à gauche de cette fenêtre
    De retour parmis vous après 10 ans!!

  4. #4
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    D'un coté j'ai un PC. Mais de l'autre c'est un système embarqué à base de microcontrôleur.... D'où l'utilité de la compréhension électronique..

    Merci
    Stay a while and listen...

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    ah oui, ok je vois... Et ce µC est capable d'enregistrer et lire un sample en temps réel ou bien tu comptes ajouter quelques composants suplémentaires (CNA/CAN) pour réaliser une carte son ? Sinon, combien de d'E/S numériques/analogiques restent disponibles ? Quelle est la fréquence max ? etc...
    De retour parmis vous après 10 ans!!

  6. #6
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Avec le micro que j'utilise , je peux seulement faire de la conversion analogique/numérique ( 10Bits, Le temps pour une acquisition est de 2,4µs minimum).
    Par contre j'ai largement de quoi faire d'un point de vue entrées/sorties digitales..
    Je pense donc que je vais utiliser un convertisseur numérique/analogique, analogique/numérique "externe" pour reproduire une sorte de carte son adaptée à mon achitecture.

    PS : Merci pour le lien. Ca me donne de quoi démarrer..
    Stay a while and listen...

  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Tu ne le sais peut-être pas, mais il est possible d'obtenir une sortie analogique avec une seule sortie numérique. Le principe est simple, lorsque le bit est à un 1, on augmente l'amplitude (intégration avec un aop et un condo) et lorsque le bit est à 0, on diminue l'amplitude. On a ainsi la possibilité de recréer la courbe d'un son avec une seule sortie numérique. La qualité n'est pas super haute, mais cela peut suffir pour reproduire des échantillons de voix humaines... De plus, l'algo est facile à mettre en oeuvre, ce procédé est déjà utilisé avec certain format de sample... La quantité de données binaires est faible par rapport à la durée du sample et sont compréssibles... De la même manière, on peut réaliser l'enregistreur. D'ailleurs, je possède les plans d'un petit montage électronique permettant l'enregistrement et la restitution d'un son codé sur un seul bit.

    Que désires-tu obtenir avec ton montage ? Quel est son but ?
    De retour parmis vous après 10 ans!!

  8. #8
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Alors là tu m'en apprend une belle... je ne pensais pas celà possible et je trouve le concepte vraiment interessant.

    Le but du jeu est de pouvoir enregistrer un message sur un système embarqué dans une sorte de balise au travers d'une liaison TCP/IP ( réseau local ou même internet..), d'écouter ce message, et enfin de "larguer" cette balise.
    Stay a while and listen...

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Je pense que tu vas devoir dans un 1er temps commencer par programmer un tchat vocal, ou utiliser une solution payante car il existe des composants Delphi pour programmer un téléphone IP... C'est seulement après avoir établie un cahier des charges que tu feras le choix du µC selon les besoins de ton application. Plus tu détailleras le projet, mieux je pourrais te conseiller pour faire ce choix.

    : As-tu déjà une expérience en éléctronique et programmation de µC ?

    : En fait, de quelle solution as-tu besoin exactement ?
    • Le son transitera dans les 2 sens en simultanné (téléphone = full-duplex)
    • On pourra soit parlé, soit écouter (interphone = half-duplex)
    • On pourra soit juste écouter ou soit juste parler ?

    : Du côté du système embarqué, que ya-t-il au bout ?
    • juste une prise téléphonique
    • un cable réseau
    • une carte réseau
    • un autre type de port
    De retour parmis vous après 10 ans!!

  10. #10
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Effectivement, il est préférable dans un premier temps que je réalise un tchat vocal. Aurais-tu un, ou des composants à me conseiller s'il te plait?

    Sinon je suis plus a l'aise avec une carte électronique et un microcontrôleur qu'avec Delphi... Je travail sur PIC18FXXXX depuis deux ans maintenant; au cours desquels j'ai acquis une certaine expérience en conception electronique ( Emetteur/recepteur RF avec synthese de frequence, chaine d'amplification, interfaces utilisateurs.. etc..) ainsi qu'en programmation sur PIC ( j'ai eut l'occasion de me servir d'à peu prés tous les périphériques de ces petites merveilles et je commence à explorer le TCP/IP embarqué.). C'est pour cela que je pense utiliser un PIC18F8722 dans ce projet.

    Dans l'immédiat, je pense que ca sera une communication vocal half duplex. ( sachant qu'il n'y aura certaienement pas que de la voix dessus sur cette liaison.)

    Du coté systeme embarqué je pense utiliser un controlleur LAN RTL8019 avec un connecteur éthernet type carte réseau et la pile TCP/IP de microchip dans le micro.
    Stay a while and listen...

  11. #11
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    ok, je vois que tu as déjà une idée précise du projet et c'est tant mieux !
    J'ai encore une question que tu n'as pas répondu :
    - Quelle est la qualité d'échantillonnage que tu souhaites utiliser ? Plus la fréquence est haute, plus la qualité du sample est élevée, plus le sample est volumineux, plus la bande passante doit être large... Le système d'échantillonnage et de reproduction que je t'ai décrit (DMF) ne permet pas d'atteindre de très haute qualité, mais suffit pour sampler la voix humaine (qualité radio) car la reproduction du sample est approximative. Par contre, si tu utilises un CAN pour l'enregistrement et un CNA pour la restitution, le sample sera de meilleur qualité (tout dépend de la fréquence maximale du CAN en fait, ainsi que du nombre de bits dispo pour coder l'amplitude). Tu comprendras de quoi il s'agit en lisant cet article :
    http://sub0.developpez.com/FormatWAV/FormatWAV.htm

    Je ne sais pas si le µC que tu as choisi possède déjà un CAN, mais tu as le choix en fait, suivant le nombre d'E/S dispo, ou bien en utilisant le principe DMF (1 seul bit)...

    Pour les composants Delphi de téléphone IP, il vaut mieux ne rien acheter pour l'instant car finalement, je pense que tu aurais tout intérêt à développer ton propre programme. A ce propos, j'ai quelques questions :

    • Combien de connexion simultanné peut-il y avoir ?
    • Combien de bornes et combien de PC en tout ?
    • Avec internet, as-tu prévu d'utiliser un serveur pour centraliser les connexions ? dédié ou mutualisé ?
    • Ou bien est-ce une connexion directe avec IP fixe (réseau local, sockets) ?
    De retour parmis vous après 10 ans!!

  12. #12
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Salut,

    Le type de signal à transmettre est de la voix (300Hz-3KHz) donc je n'ai pas besoin de grosse qualité. Aprés, développer un système plus performant ( style 8 bits 22KHz ou meme 16 bits 44,1kHz ) serait assez fun pour ma culture personnelle. D'autant plus que j'ai déjà quelques notions de traitement du signal de part mes études et ma passion qui est la musique ( pratique et enregistrement ( MAO )...). Mais il faut savoir que mon µC ne posséde qu'un convertisseur Analogique->numérique 10 Bits ( 16 entrées au total si je me souviens bien) Mais possède aussi de nombreuse entrées/sortie digitales ainsi que de nombreux périphériques ( I2C, SPI, USART, PWM... etc..)

    Pour l'instant je compte installer le système sur un simple réseau local. mais je ne connais pas le nombre de postes se trouvant sur ce réseau. Par contre il y a de grande chance qu'il n'y ai qu'un seul utilisateur à la foi.

    Merci pour ton aide.

    PS: Une petite question au passage.. Si j'ai bien compris, le montage sur un seul bit revient à faire une sorte de modulation en frequence?
    Stay a while and listen...

  13. #13
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Si l'entrée analogique du µC est libre, alors autant l'utiliser. Une résolution de 10 bits sera entièrement suffisante (faudrait voir aussi quelle est la fréquence d'échantillonnage possible). L'enregistrement sur un seul bit est un système de modulation de fréquence. Si cela t'intérresse, je te donnerais le plan du montage électronique de l'enregistreur (réalisé avec un aop monté en comparateur) et le lecteur (aop monté en intégrateur il me semble).

    En fait, ce projet est composé de 2 parties :
    • La partie interface électronique (échantillonneur + connexion TPC/IP)
    • La partie programmation (encodeur/décodeur des données audio + transfert sur le réseau)
    Ces 2 parties peuvent être travaillées séparément puis fusionner lorsqu'elles seront chacune au point.

    à+
    De retour parmis vous après 10 ans!!

  14. #14
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Merci pour ta proposition. La solution de modulation de frequence m'interresse beaucoup. Ca serait vraiment sympa si tu pouvais me donner ton projet.
    Sinon je peux réaliser une acquisition toutes les 2.4µs minimum avec mon µC

    En tout cas merci d'avance.
    Stay a while and listen...

  15. #15
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    2.4µs équivaut à 417kHz, ça me parait beaucoups pour un simple µC, sans oublier qu'il faut prendre le temps de transmettre la valeur digitale de l'échantillon avant de recommencer un nouveau sample... Es-tu sûr de m'avoir donné la bonne valeur ? As-tu téléchargé le datasheet du 18F8722 et as-tu bien regardé les caractèristiques ?
    http://ww1.microchip.com/downloads/en/DeviceDoc/39646b.pdf
    http://ww1.microchip.com/downloads/en/DeviceDoc/39500a.pdf
    21.2 Selecting and Configuring Acquisition Time
    Bref, admettons, dans ce cas, l'utilisation de la DFM n'est donc pas nécessaire. Même si le principe est génial, inutile de compliquer les choses. Je pense que la 1ère étape, c'est vérifier que l'échantillonnage avec le µC fonctionne. Pour cela, tu devras très certainement ajouter un pré-ampli (aop) en entrée entre le µC et le microphone, calculer le gain de cet ampli pour obtenir une plage de tension valide, programmer le µC pour qu'il échantillonne et envoyer les données sur le port TCP/IP. Le programme Delphi doit établir la communication avec le µC et donner l'ordre de démarrer l'échantilonnage, puis de récupérer les données audio digitalisées...

    Il faut absolument être capable de sampler avec le µC et de restituer ensuite le sample avec la carte son du PC. Tu devras probablement ajouter l'en-tête du sample WAV avant de lancer la lecture (voir mon article pour les détails des octets de l'en-tête) ou utiliser le format RAW (données brutes). Cette opération sera effectuée par le PC, donc inutile de vouloir ajouter l'en-tête avec le µC.

    Mon conseil : Echantillonne en 8 bits 22kHz environ si tu peux. Si tu veux, je possède les plans électronique d'un échantillonneur avec une entrée microphone et une sortie HP amplifiée. C'est un montage d'un sampleur enregistrant un sample d'une dizaine de secondes sur une EPROM. Je l'ai récupéré dans un magazine électronique ya longtemps (début des années 90), juste avant que les cartes son apparaissent sur le marché... D'ailleurs, à l'époque, je comptais me fabriquer ma propre carte son mais le matos étaient hors de prix...
    à+
    De retour parmis vous après 10 ans!!

  16. #16
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Merci pour ta réponse.
    Il semblerait que la durée d'une acquisition avec la fréquence d'oscillation maximum soit de 13µs environ. A cela il faut que j'ajoute le temps de traiter le sample, le bufferiser et l'envoyer, etc... Mais je pense que les 22KHz doivent être largement possible.

    J'accepte volontier ta proposition concernant ton plan de montage issue du magazine. ( En 90 j'étais encore assez jeune mais j'ai souvenir qu'à l'époque ils étaient trés bien fait. )

    Par contre, autant le micro va pouvoir se charger de la conversion analogique numerique, que pour ce qui concerne la conversion numérique analogique, il faut que j'utilise une autre solution et le DFM semble assez apropié.

    Cordialement
    Stay a while and listen...

  17. #17
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Perso, j'utiliserais 8 sorties numériques du µC pour réaliser le CNA car quelques résistances et un aop suffisent pour créer cette fonction. Ou bien une seule sortie numérique en ajoutant un buffer de registre pour sérialiser l'octet... Le DMF vaut le coups si l'on utilise ce procédé pour échantillonner, sinon, il vaut mieux utiliser une conversion analogique-numérique standart... Pour le plan électronique, le mieux est que je le scanne et que je te l'envoi (il faut que je le retrouve dans mes cartons). Je pense que je le mettrai sur mon hébergement et je te donnerai l'hyperlien de téléchargement. Avec ce montage, tu pourras réaliser l'étage pré-ampli pour l'entrée microphone et la sortie pré-amplifiée pour brancher des écouteurs (genre HP ou casque de walkman). De ton côté, tu devrais commencer à regarder comment tu vas programmer le PIC pour échantillonner et récupérer les données.

    ps: Peut-être que je réaliserai une maquette de ce montage pour t'aider davantage à sa réalisation et sa mise au point. Le problème est que je n'ai pas beaucoups de temps à consacrer à la programmation...

    à+
    De retour parmis vous après 10 ans!!

  18. #18
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    Je te remercie beaucoup pour ton aide.
    J'attend ton Hyperlien.
    Merci encore
    Cordialement
    Stay a while and listen...

  19. #19
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    De retour parmis vous après 10 ans!!

  20. #20
    Membre habitué Avatar de zodd
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 276
    Points : 147
    Points
    147
    Par défaut
    C'est bon j'ai récupéré le scan.
    Merci beaucoup
    Stay a while and listen...

Discussions similaires

  1. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31
  2. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 10h59
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo