回答編集履歴
1
エンディアン変換の補足を追加
    
        answer	
    CHANGED
    
    | @@ -22,4 +22,37 @@ | |
| 22 22 | 
             
                wav.setsampwidth(2) # 16bit
         | 
| 23 23 | 
             
                wav.setframerate(16000) # 16k
         | 
| 24 24 | 
             
                wav.writeframes(data)
         | 
| 25 | 
            -
            ```
         | 
| 25 | 
            +
            ```
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ---
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            #### エンディアン変換の補足
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            行っていることは
         | 
| 32 | 
            +
            「バイト配列(バイナリデータ)」→「Int型のリスト(実データ)」→「バイト配列」
         | 
| 33 | 
            +
            です。
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            順番に説明しますと、
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            まず第1ステップとして ``struct.unpack()`` にてバイナリデータを実データに変換します。
         | 
| 38 | 
            +
            その際にどのようなフォーマットで変換するかは第一引数にて指定します。
         | 
| 39 | 
            +
            今回の場合は
         | 
| 40 | 
            +
            - ビックエンディアン(__'>'__)
         | 
| 41 | 
            +
            - 1つデータは2Byte(__'h'__)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            なので ``">##h"`` としております。(ここで **##**には変換するデータ数が入りますので、``format()`` を使用して、もとのバイナリ長の1/2の値を入れております。)
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            > ここで変換されたデータは実データとなりますので、信号処理や波形表示などを行う場合はこの**lst** を使うことができます。(一般的には **lst**はLR交互のデータなので、更に ``l,r=lst[0::2],lst[1::2]`` などとしてLRを分離して使用することになります。)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            で、次のステップとして ``struct.pack()`` にて再度、Int配列をバイナリデータに変換しております。
         | 
| 48 | 
            +
            ここも同様にフォーマット指定が必要な為、
         | 
| 49 | 
            +
            - リトルエンディアン(__'<'__ :省略可能)
         | 
| 50 | 
            +
            - 1つデータは2Byte(__'h'__)
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            の ``"##h"`` を指定しております。(**##**には変換するデータ数を入れる必要がありますので、``format()`` を使用して、実データのサイズを入れております。)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            structパッケージの詳細に関しては、公式ドキュメントを見てください。
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            [https://docs.python.jp/3/library/struct.html
         | 
| 57 | 
            +
            ](https://docs.python.jp/3/library/struct.html)
         | 
| 58 | 
            +
            以上です。
         | 
