質問編集履歴

4

コメントを受けての追記

2023/04/30 12:51

投稿

ngh_orange
ngh_orange

スコア17

test CHANGED
File without changes
test CHANGED
@@ -66,3 +66,10 @@
66
66
  MicroPython 1.19.1
67
67
  Python 3.9.7
68
68
 
69
+ ### 追記
70
+ can110様が教えていただいた通り、適切なサンプリングレートで録音できていないことがわかりました。
71
+ 何回か測定してみたところ、3000~11000というとても幅があることになり、困っています。
72
+ 試しに11000ぐらいでエンコードしてみたところ、たしかに速度は適切でしたが、明らかに音が低くなってしまいました。
73
+ プログラミング側で16000Hzに固定、またはその周辺での録音か、16000Hzではなくても普通に録音する方法はありませんか?
74
+ マイコンで録音したい、というのは珍しいことではないと思うのですが、普通はどうやって実現しているのでしょうか?
75
+

3

コードの変更です

2023/04/29 15:19

投稿

ngh_orange
ngh_orange

スコア17

test CHANGED
File without changes
test CHANGED
@@ -16,13 +16,6 @@
16
16
  import os
17
17
 
18
18
  filename = "/recording.pcm"
19
-
20
- file_list = os.listdir('/')
21
- if 'recording.pcm' in file_list:
22
- filename = "next.pcm"
23
- else:
24
- print('file.txt does not exist')
25
- pass
26
19
 
27
20
  mic_pin = ADC(Pin(26))
28
21
 

2

コードの変更です

2023/04/29 15:19

投稿

ngh_orange
ngh_orange

スコア17

test CHANGED
File without changes
test CHANGED
@@ -17,6 +17,13 @@
17
17
 
18
18
  filename = "/recording.pcm"
19
19
 
20
+ file_list = os.listdir('/')
21
+ if 'recording.pcm' in file_list:
22
+ filename = "next.pcm"
23
+ else:
24
+ print('file.txt does not exist')
25
+ pass
26
+
20
27
  mic_pin = ADC(Pin(26))
21
28
 
22
29
  with open(filename, "wb") as f:
@@ -30,8 +37,10 @@
30
37
  samples_per_second = sample_rate * num_channels
31
38
  # 1フレームあたりのバイト数
32
39
  bytes_per_frame = sample_width * num_channels
40
+ # 録音する時間
41
+ record_time = 3
33
42
  # 録音するサンプル数
34
- num_samples = min(record_time * samples_per_second, 70000 // bytes_per_frame)
43
+ num_samples = record_time * samples_per_second
35
44
 
36
45
  # 録音を開始
37
46
  print("start")
@@ -40,7 +49,6 @@
40
49
  sample_data = ustruct.pack("<H", sample)
41
50
  f.write(sample_data)
42
51
 
43
-
44
52
  print("stop")
45
53
  f.close()
46
54
 

1

コードの誤りです。質問の根本的な内容には関係ありません。

2023/04/29 15:04

投稿

ngh_orange
ngh_orange

スコア17

test CHANGED
File without changes
test CHANGED
@@ -16,13 +16,6 @@
16
16
  import os
17
17
 
18
18
  filename = "/recording.pcm"
19
-
20
- file_list = os.listdir('/')
21
- if 'recording.pcm' in file_list:
22
- filename = "next.pcm"
23
- else:
24
- print('file.txt does not exist')
25
- pass
26
19
 
27
20
  mic_pin = ADC(Pin(26))
28
21