Qcusに飽きてきたのでまたPythonに逆戻り。 すぐに飽きる性格は、歳を取ってもかっわらない。
PyAudioを使って短点を発音させてみた。
短点の長さは欧文だとPARISで定義されているけど、和文だとどうもはっきりしない。 無線従事者の国家試験では75字/分とか明記されているので短点の長さが規定されていると思うんだけど、ネットで調べても情報がない。 そこでA1ABreakerという電信練習ソフトの速度を参考にした。 このソフトは、**文字/分と設定するとその時の短点の長さが表示される。
これを参考にすると、ドットの長さは、
ドットの長さ(ms) = 3.724 / 1分当たりの文字数
と求められる。
50文字/分の時の短点を発音させるソース。 ちなみに、短点の後ろのスペース時間も追加している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import numpy as np import pyaudio amp = 0.5 freq = 800 dot_time = 0.0744 # 50字/分 fs = 44100 dot_list = np.arange(fs * dot_time) / fs p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paFloat32, channels=1, rate=fs, output=True) samples = amp * np.sin(2 * np.pi * freq * dot_list) + 0 * np.sin(2 * np.pi * freq * dot_list) stream.write(samples.astype(np.float32).tobytes()) stream.stop_stream() stream.close() p.terminate() |
C#の時は結構面倒なことをしていたと思うけど、Pythonだとかなりすっきりする。 時間の精度とか不明だけど、とりあず音は出そう。