質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

587閲覧

python 音 プログラムについて

Chuchuchu

総合スコア16

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/06/19 06:02

編集2018/06/20 05:00

実行すると音階ドレミファソラシドを順に鳴らすようなプログラムを作成しているのですが下のコードのy部分がいろいろ試したのですがエラーを吐いてしまいうまく行きません。分かる方いたら回答お願いします。ちなみに配列として扱って音声をつなぎ合わせるようなコードを書いてます。

Python

1# -*- coding: utf-8 -*- 2 3import numpy as np 4import scipy.fftpack as spf 5 6from scipy.io.wavfile import write 7import matplotlib.pylab as plt 8 9def GenFreq(Fc, Fs, dur): 10 delta = 1./Fs 11 Nmax = Fs * dur 12 t = np.arange(Nmax) * delta 13 x = Amp * np.sin(2. * np.pi * Fc * t) 14 return x 15 16Fs = 22100. # サンプリング周波数 17Fcs = [262, 294, 330, 349, 392, 440, 494, 523] 18dur=3. # 3秒のデータ 19Amp=4000. # 振幅 20 21sound=GenFreq(Fcs[0],Fs,dur) #初め 22for i in range(7): # その後に音声をつなげていく 23 sound=np.r_[sound,GenFreq(Fcs[i+1],Fs,dur)] 24 25y= # y に音声波形を入れたものとしてファイルを保存(ここが分からない) 26fname = 'MkSnd4Test.wav' 27write(fname, Fs, y) 28

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

wavファイルを作成するのであれば、標準ライブラリのwaveをお使いください。
https://docs.python.jp/3/library/wave.html

Python

1# -*- coding: utf-8 -*- 2import numpy as np 3from scipy.io.wavfile import write 4import matplotlib.pylab as plt 5import struct 6import wave 7 8def GenFreq(Fc, Fs, dur): 9 delta = 1./Fs 10 Nmax = Fs * dur 11 t = np.arange(Nmax) * delta 12 x = Amp * np.sin(2. * np.pi * Fc * t) 13 return x 14 15Fs = 22100. # サンプリング周波数 16Fcs = [262, 294, 330, 349, 392, 440, 494, 523] 17dur = 3. # 3秒のデータ 18Amp = 4000. # 振幅 19 20sound=GenFreq(Fcs[0], Fs, dur) #初め 21for i in range(7): # その後に音声をつなげていく 22 sound=np.r_[sound,GenFreq(Fcs[i+1],Fs,dur)] 23 24# バイナリデータ(short)変換 25data = struct.pack('h' * sound.size, *sound.astype(int)) 26 27# Waveファイル書き出し 28fname = 'MkSnd4Test.wav' 29with wave.open(fname, "w") as wav: 30 wav.setnchannels(1) 31 wav.setsampwidth(2) 32 wav.setframerate(Fs) 33 wav.writeframes(data)

投稿2018/06/19 07:18

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問