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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

732閲覧

ScriptProcessorNodeとWAVファイルの「サンプルあたりのビット数」について

hodomoe

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/12/21 02:14

編集2021/12/21 02:26

質問

Qiitaの記事を読んでいて気になったところがあったので質問します。

ブラウザで録音してwavで保存

この記事でWAVファイルを作成するとき「サンプルあたりのビット数」が16bitとなってるのはなぜでしょうか?

view.setUint16(34, 16, true); // サンプルあたりのビット数

ScriptProcessorNodeから得られる値の型はFloat32Arrayなので32bitなのではと思いましたが、自分で試してみるとやはり16bitだと正しく動いて、32bitだと2倍速みたいな再生になるようです。

ScriptProcessorNodeではFloat32Arrayが使われているのにwavのバイナリでは16bitと設定する理由を教えてください。

補足

私が「サンプルあたりのビット数」が32bitではないかと思うに至った文献を引用します。

WebAudioでの音声信号処理

ちなみに量子化ビット数はFloat32Arrayなので32bitと、中々の高音質。

WebAudioで原始的な音声圧縮をやってみた

実数を使っているのでリニア量子化ではなく直接比較は難しいのですが、ダイナミックレンジ(音の大小の表現の幅)では24bit整数をはるかに超えます。こちらはハイレゾ音源の資格は十分満たしていると思います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

世の中で一般的な 16bit整数サンプルのwavファイルを作りたいから、というだけでしょう。関数 floatTo16BitPCM() で float のサンプルを整数に変換しています。

wavファイルはfloatのサンプルもサポートしている(WAVE_FORMAT_IEEE_FLOAT)ので、floatのまま書き出すこともできます。が、floatサンプルをサポートしていない再生環境があるかもしれません。

投稿2021/12/21 02:34

編集2021/12/21 02:52
int32_t

総合スコア21020

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

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

hodomoe

2021/12/21 05:38 編集

ありがとうございました! floatTo16BitPCM()の中身を書き換えたらFloat32Arrayからbit/sampleが8,16,24,32のwavファイルを作るプログラムが実装できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問