

playsoundをJupyter Notebookで使って以下の様に実行するとエラーが出ます。  
一度はうまくいったのに二回目からうまくいきません。

**実行したコード:**

[code]

    wf.write('mix_1.wav', rate1, y[0])
    wf.write('mix_2.wav', rate2, y[1])
    wf.write('mix_3.wav', rate3, y[2])
    
[/code]

**エラー:**

[code]

    PermissionError: [Errno 13] Permission denied: 'mix_1.wav'
    
[/code]

また、そのあとに以下のコードを実行する別のエラーが出ました。何か関係があるのでしょうか。解決方法を教えていただきたいです。

**実行したコード:**

[code]

    from playsound import playsound
    
    playsound("mix_1.wav")
    
[/code]

**エラー:**

[code]

    Error 265 for command:
            open mix_1.wav
        そのデバイス名はこのアプリケーションでエイリアスとして既に使用されています。一意のエイリアスを使用してください。
    
[/code]


CC BY-SA 4.0
2021-09-28T16:31:43.203
82738
2023-08-12T13:03:30.427
2021-09-30T00:45:09.167
3060
48401
question
python python3 jupyter-notebook
playsoundを使って音声を再生しようとするとエラーが発生する


後続の質問に関する検索で見つかった [独立成分分析による音源分離](https://aidemy.net/magazine/685/)
の以下のスクリプトと類似のことだと思われますが、つまり`wf.write('mix_1.wav', rate1,
y[0])`に関しては`playsound`ではなく`scipy.io.wavfile`の機能や使い方ということですね。

そして以下をスクリプトファイルにしてWindows10 64bit Pythonの素のインタプリタで実行したところでは何回やっても正常に動作しています。

>
[code]

>     import numpy as np
>     import scipy.io.wavfile as wf
>  
>     rate1, data1 = wf.read('loop1.wav')
>     rate2, data2 = wf.read('strings.wav')
>     rate3, data3 = wf.read('fanfare.wav')
>     if rate1 != rate2 or rate2 != rate3:
>         raise ValueError('Sampling_rate_Error')
>  
>     mix_1 = data1 * 0.6 + data2 * 0.3 + data3 * 0.1
>     mix_2 = data1 * 0.3 + data2 * 0.2 + data3 * 0.5
>     mix_3 = data1 * 0.1 + data2 * 0.5 + data3 * 0.4
>     y = [mix_1, mix_2, mix_3]
>     y = [(y_i * 32767 / max(np.absolute(y_i))).astype(np.int16) for y_i in
> np.asarray(y)]
>  
>     wf.write('mix_1.wav', rate1, y[0])
>     wf.write('mix_2.wav', rate2, y[1])
>     wf.write('mix_3.wav', rate3, y[2])
>  
[/code]

なので、使っているOSがWindowsで無ければOSの、あるいは`JupyterNotebook`での使い方によるものかもしれません。

いったん該当のNotebookを閉じて環境をリセットしたり`JupyterNotebook`を終了・再起動してから、スクリプトを再実行してみてはどうでしょう？  
それで再実行時の初回が正常に動作するなら`JupyterNotebook`での使い方に、再実行時の初回でも問題があるならOSに関わる問題が考えられます。

または上記同様に`JupyterNotebook`ではなく素のPythonで実行して結果を比べてみてください。

* * *

後半の`playsound`に関しては、Windows10 64bit
Pythonの素のインタプリタで.wavファイルの演奏は行われますが、終了時に以下のようなcloseがエラーになります。

[code]

    C:\Develop\Python>py playwav.py
    
        Error 263 for command:
            close mix_1.wav
        指定されたデバイスが開かれていないか、または MCI で認識されません。
    Failed to close the file: mix_1.wav
    
    C:\Develop\Python>
    
[/code]

そしてスクリプトではなく対話型で実行して、エラー発生後も再度`playsound`を実行すると、質問と同様のエラーが通知されます。  
ただし単独で1回だけ発生するのではなく初回時`closeエラー`→二回目時`openエラー`→`closeエラー`→`openエラー`となります。

[code]

    C:\Develop\Python>py
    Python 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from playsound import playsound
    >>>
    >>> playsound("mix_1.wav")
    
        Error 263 for command:
            close mix_1.wav
        指定されたデバイスが開かれていないか、または MCI で認識されません。
    Failed to close the file: mix_1.wav
    >>> playsound("mix_1.wav")
    
        Error 265 for command:
            open mix_1.wav
        そのデバイス名はこのアプリケーションでエイリアスとして既に使用されています。一意のエイリアスを使用してください。
    
        Error 263 for command:
            close mix_1.wav
        指定されたデバイスが開かれていないか、または MCI で認識されません。
    Failed to close the file: mix_1.wav
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python39\lib\site-packages\playsound.py", line 72, in _playsoundWin
        winCommand(u'open {}'.format(sound))
      File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python39\lib\site-packages\playsound.py", line 64, in winCommand
        raise PlaysoundException(exceptionMessage)
    playsound.PlaysoundException:
        Error 265 for command:
            open mix_1.wav
        そのデバイス名はこのアプリケーションでエイリアスとして既に使用されています。一意のエイリアスを使用してください。
    >>>
    
[/code]

なので以下のいずれかが考えられます。

  * `playsound`の新しく見つかったバグ
  * `playsound`の使い方に何か不備がある
  * `.wav`ファイルに何か問題がある
  * Windows10の何時かのUpdateで非互換または問題が混入した

* * *

`playsound`について追記：

Windows10 64bit Python 3.9.7
の環境では、こちらの記事を参考に`playsound`のバージョンを`1.2.2`に下げることで問題は発生しなくなりました。  
どうも`1.3.0`から？入ったか顕在化したバグのようですね。  
[What is the error in the code for this playsound module even though the
syntax is same as on official
site?](https://stackoverflow.com/q/68531326/9014308)

> pip install playsound==1.2.2
>
> The specified device is not open or is not recognized by MCI - playsound
> 1.3.0
>
> コメント: This is actually what solved the issue for me. Try downgrading the
> playsound version to 1.22 and it will work!

* * *

`PermissionError`について追記：

状況は分からないながらも、Unix系で良くあるのがフォルダーやファイルのオーナーやエラーメッセージのとおりパーミッションが合っていないという物らしいですね。  
[Cannot open new Jupyter Notebook [Permission
Denied]](https://stackoverflow.com/q/46272880/9014308)  
[Jupyter notebook permission
error](https://stackoverflow.com/q/35878178/9014308)

Windowsでさえも似たような話があるようです。  
[jupyter notebookでkernel
errorを解決したいです。](https://teratail.com/questions/244207)  
[PermissionError: [Errno 13] Permission denied
#4907](https://github.com/jupyter/notebook/issues/4907)

あとこちらはWindowsでもWSLなのでUnix系ですが。  
[PermissionError: [Errno 13] Permission denied when running jupyter notebook
on bash #3608](https://github.com/microsoft/WSL/issues/3608)


CC BY-SA 4.0
2021-09-29T11:50:53.077
82760
2021-09-30T12:15:52.190
2021-09-30T12:15:52.190
26370
26370
82738
answer