[PYTHON] Écouter de la musique à partir d'un haut-parleur USB à l'aide du package ROS (gx_sound_player)

Objectif

J'ai joué de la musique à partir d'un haut-parleur USB en utilisant le package ROS (gx_sound_player). Il y avait des points bloqués avant de jouer, je vais donc le résumer dans cet article avec la procédure de confirmation qui a été effectivement effectuée.

Le contenu de cet article est basé sur les articles suivants.

Introduction de gx_sound_player et de la procédure de publication des packages ROS

Préparation

Haut-parleur USB: par exemple, ici Environnement cinétique Ubuntu16.04 + ROS Fichier de musique de test (.wav): Par exemple, je vais le télécharger depuis ici.

étape 1. Vérifiez que la musique peut être lue à partir du haut-parleur USB

1. 1. Connectez le haut-parleur USB à votre PC

2. Vérifiez que le périphérique audio est visible
  $ ls -l /dev/snd/*
⇒ Vous devriez voir pcmC1D0p etc.
(Ci-après, on suppose que pcmC1D0p est le fichier de périphérique du haut-parleur USB)

3. 3. Lire des fichiers WAV avec aplay
  $ aplay -D hw:1,0 musicbox.wav
⇒ OK si vous pouvez lire de la musique à partir du haut-parleur USB

Si vous ne pouvez pas lire de musique à partir du haut-parleur USB, passez en revue la procédure.

étape 2. Vérifiez que le fichier WAV peut être lu avec le package gx-sound

Installez le package gx-sound.

$ sudo apt install ros-kinetic-gx-sound
1. 1. Démarrer roscore
$ source ~/catkin_ws/devel/setup.sh
$ roscore

2.gx-démarrer le nœud sonore
$ roslaunch gx_sound_player sound_player.launch device_name:="hw:1,0"

3. 3. Lecture WAV
$ rosrun rulo sound-test.py
⇒ OK si vous pouvez lire de la musique à partir du haut-parleur USB
Fichier de musique/home/ubuntu/Downloads/musicbox.Magasin en wav

sound-test.py


#! /usr/bin/env python
# -*- coding: utf-8 -*-

import actionlib
import os
import rospy

from gx_sound_msgs.msg import SoundRequestAction, SoundRequestGoal


def main():
    rospy.init_node('sound_request_client_node')
    client = actionlib.SimpleActionClient('/gx_sound_player/sound_player/sound_request', SoundRequestAction)
    client.wait_for_server()
    rospy.loginfo("connected to actionlib server")

    now = rospy.Time.now()

    #Audio3 après 0 seconde.Jouer wav
    #Fichier de musique/home/ubuntu/Downloads/musicbox.Magasin en wav
    goal1 = SoundRequestGoal(stamp=now + rospy.Duration(0.0), file="/home/ubuntu/Downloads/musicbox.wav")

    rospy.loginfo("send request")
    client.send_goal(goal1)
    rospy.loginfo("send complete")
    #client.wait_for_result(rospy.Duration.from_sec(5.0))


if __name__ == '__main__':
    main()

Comment arrêter la voix

OK si vous envoyez le fichier silencieux Le fichier silencieux sera téléchargé depuis ici.

Contre-mesures d'erreur

Si le paquet gx-sound est introuvable

gx-installation du package audio
$ sudo apt install ros-kinetic-gx-sound
ros-kinetic-gx-sound not found

J'ai mis à jour la liste des paquets comme suit et je l'ai résolu.

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-get update

--

Lorsqu'une erreur de format de voix se produit

Je l'ai résolu en convertissant le format avec ffmpeg.

Fichier audio 48000Hz, 16bit LittleEndian,Comment convertir en stéréo
$ sudo apt-get install ffmpeg
$ ffmpeg -i input.wav -ar 48000 -format S16_LE -channel 2 output.wav

référence

Introduction de gx_sound_player et de la procédure de publication du package ROS Free Wave, MP3

Recommended Posts

Écouter de la musique à partir d'un haut-parleur USB à l'aide du package ROS (gx_sound_player)
Appelez votre propre module python à partir du package ROS
MP3 organisé automatiquement téléchargé depuis Google Play Music en utilisant Python
Utilisez boto pour télécharger le fichier depuis S3.
Contrôlez le panneau LED Matrix depuis ROS
Jouez avec Dajare en utilisant l'API COTOHA