I was generating an audio file on WSL and wanted to play it from a command. It was an exaggeration to run the sound server, so I made a simple program in Python on the Windows side and called it via a wrapper.
In the next article, you'll find a lot of Python sound libraries.
This time we will use playsound. Install with pip on Python on the Windows side.
Library installation
py.exe -m pip install playsound
py.exe
is located in the path (C: \ WINDOWS
) on the Windows side, you can call it from WSL by adding .exe
.playsound is easy to use by simply importing and passing the filename.
Added a function to specify multiple files and display the name of the file being played. (-P
option)
winplay.py
import sys, playsound
if len(sys.argv) < 2:
print("usage: %s [-p] sound [...]" % sys.argv[0])
print(" -p: show file name")
exit(1)
argp = 2 if sys.argv[1] == "-p" else 1
args = sys.argv[argp:]
argl = len(args)
format = "[%%%dd/%%d] %%s" % len(str(argl))
for i, arg in enumerate(args):
if argp > 1: print(format % (i + 1, argl, arg))
playsound.playsound(arg)
WSL
Place wintts.py somewhere visible to Windows. Write a simple wrapper like the following and place it wherever the path is in WSL and add the execute attribute.
winplay
#!/bin/sh
py.exe 'C:\Script storage\winplay.py' "$@"
You can now use it as if it were a WSL command.
Example of use
winplay test.wav
winplay -p *.wav
MP3
MP3s can be played for the time being, but in my environment, playback was interrupted and other phenomena occurred.
I prefixed it with win- to indicate that it works on the Windows side.
Actually, at first, I tried to name the library as it is playsound, but I canceled it because I was addicted to import.
Opinions similar to this method are written.
However, if you think about it, you can also run Windows exe from wsl, so if you have an exe that can play wav files, you can use it to make a sound.
As mentioned there, there is a way to get the sound server working.
Recommended Posts