ホームページ > バックエンド開発 > PHPチュートリアル > PHPマスター| WAVファイルから抜粋を抽出します

PHPマスター| WAVファイルから抜粋を抽出します

Jennifer Aniston
リリース: 2025-02-24 10:39:14
オリジナル
838 人が閲覧しました

PHP Master | Extract an Excerpt from a WAV File

PHPはWebページやアプリケーションを構築することで知られていますが、それ以上のものがあります。最近、WAVファイルからオーディオを動的に抽出し、ユーザーがブラウザを介してダウンロードできるようにする必要がありました。ニーズに合ったライブラリを見つけようとしましたが、成功せず、自分のコードを書かなければなりませんでした。これは、WAVファイル構造を掘り下げる絶好の機会です。この投稿では、WAVファイル形式の概要を簡単に説明し、開発したライブラリ:Audero WAV抽出器について説明します。

キーポイント

  • 波形オーディオファイル形式(WAV)は、Microsoftがデジタルオーディオデータを保存するために使用される標準であり、オーディオファイルのさまざまな部分を表すブロックで構成されています。 「リフ」、「FMT」、および「データ」が最も重要なブロックです。
  • Audero WAV Extractorは、WAVファイルからフラグメントを抽出できるPHPライブラリです。 PHP 5.3以降が必要であり、フラグメントをローカルハードドライブに保存したり、ユーザーのブラウザからダウンロードしたり、後で処理するために文字列として返すことができます。
  • Audero WAV抽出ライブラリには、抽出プロセスを管理するためのdownloadChunk()saveChunk()getChunk()などのメソッドが含まれています。各メソッドでは、フラグメントの開始時間パラメーターと終了時間パラメーターを抽出する必要があります。
  • WAVファイルの持続時間は、次の式を使用して計算できます。この情報は、他の重要なデータとともに、WAVファイルの「データ」および「FMT」ブロックから取得できます。 <code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>

WAV形式の概要WaveまたはWAVとも呼ばれるWaveオーディオファイル形式は、Microsoftがデジタルオーディオデータを保存するために使用するファイル形式の標準です。 WAVファイルは、オーディオファイルのさまざまな部分を表すさまざまな種類のブロックのセットで構成されています。この形式はHTMLページと考えることができます:最初のブロックはWebページの

部分のようなものであるため、ファイル自体に関するいくつかの情報を見つけることができますが、オーディオデータ自体を含むブロックはページ>パーツの

<section></section>setFilePath()があると仮定します

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
ログイン後にコピー
ログイン後にコピー
これらの値を式に適用すると、

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>
ログイン後にコピー
ログイン後にコピー
結果は102秒(丸)です。 WAVファイルの構造の詳細な説明は、この記事の範囲を超えています。さらに勉強したい場合は、これに対処しながら遭遇したこれらのページを読んでください:

<code>time = 4498170 / (22050 * 1 * 16 / 8)</code>
ログイン後にコピー

https://www.php.cn/link/21c1da87c1afdd4ed2836bdb521bea78

Audero WAV Extractorは、WAVファイルからフラグメントを抽出できるPHPライブラリです。抽出されたフラグメントをローカルハードドライブに保存したり、ユーザーのブラウザからダウンロードしたり、後で処理するために文字列として返すことができます。このライブラリの唯一の特別な要件は、名前空間を使用するため、PHP 5.3以降です。ライブラリのすべてのクラスはWaveXtractorディレクトリにありますが、ライブラリのオートローダーを見つけることができる追加のローダーディレクトリがあることに気付くでしょう。開発者のエントリポイントは、Auderowavextractorクラスです。これには、プロジェクトに3つの主要な方法があります。

  • :クリップをダウンロードしますdownloadChunk()
  • :ハードドライブに保存しますsaveChunk()
  • :ストリングとしてフラグメントを検索getChunk()
  • これらすべてのメソッドの最初の2つのパラメーターは同じです:
および

は、それぞれ抽出される部分の開始時間と終了時間(ミリ秒単位)を表します。さらに、$startおよび$endは、抽出されたフラグメントの名前を設定するオプションの3番目のパラメーターを受け入れます。名前が提供されていない場合、メソッドは「inputfileName-start-end.wav」という形式で名前自体を生成します。 WaveXtractorディレクトリには、2つのサブフォルダーがあります。後者には、波、チャンク、チャンクフィールドのクラスが含まれています。最初のものは、ご想像のとおり、1つ以上のブロック(チャンクタイプ)で構成されるWAVファイルを表します。このクラスを使用すると、WAVヘッダー、オーディオ期間、その他の有用な情報を取得できます。その最も重要な方法はdownloadChunk()です。これは、ファイル内のバイトを読み取ることで指定されたオーディオパーツを取得します。 Chunkクラスは、Chunkフォルダーに含まれる専用クラスによって拡張されるWAVファイルのブロックを表します。後者は、既存のすべてのブロックタイプをサポートするものではなく、最も重要なブロックタイプのみをサポートしています。未確認の部分は一般クラスによって管理され、プロセス全体で単に無視されます。説明した最後のクラスはチャンクフィールドです。私が指摘したように、各ブロックには独自のタイプとフィールドがあり、各フィールドには異なる長さ(バイト)と形式があります。これは非常に重要なメッセージです。なぜなら、PHPのsaveChunk()およびgetWavChunk()関数を使用してバイトを正しく解析するために正しいパラメーターを渡す必要があるため、エラーが届きます。データを管理するために、各フィールドのフォーマット、サイズ、値を保持するクラスにラップすることにしました。 pack() unpack()

Audero WAV抽出器の使用方法

作曲家を介して「AuderoWav抽出器」を取得し、次の行を

ファイルに追加して、インストールコマンドを実行できます。

composer.jsonComposerは、図書館をダウンロードしてプロジェクトのディレクトリに配置します。または、リポジトリからライブラリを直接ダウンロードすることもできます。フラグメントとフォースダウンロードをユーザーのブラウザに抽出するには、次のようなコードを記述します。

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
ログイン後にコピー
ログイン後にコピー

最初の行に、作曲家のオートローダーを含めてから、使用する値を設定しました。ご覧のとおり、ソースファイル、ファイル名を含む出力パス、抽出する時間範囲を提供します。次に、auderowavextractorのインスタンスを作成し、ソースファイルをパラメーターとして使用し、downloadChunk()メソッドと呼びました。出力パスは参照によって渡されるため、常に変数として設定する必要があることに注意してください。別の例を見てみましょう。タイム範囲を選択し、ファイルをローカルハードドライブに保存する方法を紹介します。また、プロジェクトに含まれるオートローダーを使用します。

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>
ログイン後にコピー
ログイン後にコピー

ローダー構成とは別に、このコードスニペットは以前のコードスニペットと非常に似ています。実際、私は2つの変更のみを作成しました。1つ目はsaveChunk()の代わりに呼ばれる方法、downloadChunk()であり、2つ目は出力ファイル名を設定しなかったことです(前述のデフォルト形式を使用します)。

結論

この投稿では、「Audero WAV抽出器」と、特定のWAVファイルから1つ以上のフラグメントを簡単に抽出する方法を示します。私は、非常に狭いタイルのセットを必要とする作業プロジェクトのために図書館を書きました。そのため、WAVまたはそのヘッダーがひどく破損している場合、ライブラリは失敗する可能性がありますが、可能な限りエラーから回復するためにコードを書きました。 CC BY-NC 3.0ライセンスの下でリリースしたため、リポジトリに含まれるデモとファイルを自由に使用してください。

(以下は、元のFAQパーツの擬似オリジナル作品であり、元の意味を維持し、言語を調整します) WAVファイルからフラグメントを抽出する

FAQ(FAQ)WAVファイルの特定の部分を抽出する方法は?

WAVファイルの特定の部分を抽出するには、Audacityなどのオーディオ編集ソフトウェアを使用する必要があります。 WAVファイルをAudacityで開き、選択ツールを使用して抽出するセクションを選択し、[ファイル]メニューから[選択]を選択します。その後、選択した部分を新しいWAVファイルとして保存できます。

プログラミング言語でWAVファイルからデータを抽出できますか?

はい、Pythonなどのプログラミング言語を使用してWAVファイルからデータを抽出できます。

などのライブラリを使用して、WAVファイルを読み取り、データを抽出できます。その後、ニーズに応じてこのデータを操作できます。

scipy.io.wavfilewaveオーディオファイルから秘密情報を抽出する方法は?

オーディオファイルから秘密情報を抽出するには、Steganographyと呼ばれるプロセスが含まれます。このプロセスには、情報以外のテキストまたはデータに情報を隠すことが含まれます。オーディオファイルから非表示のメッセージを抽出するのに役立つさまざまなソフトウェアとツールがあります。

WAVファイルから音声や音声を抽出できますか?

WAVファイルからサウンドを抽出することは、オーディオソースの分離または音声分離を含む複雑なタスクです。これは、高度な信号処理技術と機械学習アルゴリズムを使用して実現できます。 Audacityのようなソフトウェアはある程度役立ちますが、より複雑なタスクの場合、より高度なツールやサービスを使用する必要がある場合があります。

rの関数は、波のファイルからdb値を抽出しますか?

rでは、チューナーパッケージを使用してWAVファイルを読み取り、データを抽出できます。 readWave()関数を使用してWAVファイルを読み取ることができ、生成されたオブジェクトを使用してDB値にアクセスできます。ただし、適切な数式を使用して振幅値をDBに変換する必要がある場合があります。

WAVファイルから周波数情報を抽出する方法は?

WAVファイルから周波数情報を抽出するには、データのフーリエ変換を実行することが含まれます。これは、PythonのNumpyライブラリまたはRのFFTライブラリを使用して実行できます。フーリエ変換の結果は、オーディオ信号の周波数コンポーネントを提供します。

WAVファイルからメタデータを抽出できますか?

はい、WAVファイルからメタデータを抽出できます。これには、サンプリングレート、ビットの深さ、チャネル数、期間などの情報が含まれる場合があります。これは、さまざまなプログラミング言語でオーディオ処理ライブラリを使用して実行できます。

WAVファイルから複数の部品を抽出する方法は?

WAVファイルから複数の部品を抽出するには、Audacityなどのオーディオ編集ソフトウェアを使用できます。抽出する各パーツを選択して、新しいファイルとしてエクスポートすることができます。このプロセスは、各部品を抽出するために繰り返すことができます。

ビデオファイルからオーディオを抽出して、WAVファイルとして保存できますか?

はい、ビデオファイルからオーディオを抽出し、WAVファイルとして保存できます。これは、ビデオ編集ソフトウェアまたは変換ツールを使用して実行できます。このプロセスでは、ビデオファイルを開き、オーディオトラックを抽出し、WAVファイルとして保存することが含まれます。

WAVファイルを別のオーディオ形式に変換する方法は?

WAVファイルを別のオーディオ形式に変換するには、オーディオ変換ソフトウェアまたはツールを使用できます。これらのツールを使用すると、WAVファイルを開き、MP3、FLAC、AACなどの別の形式で保存できます。通常、変換プロセスでは、出力形式を選択し、必要な質量またはビットレートを設定します。

以上がPHPマスター| WAVファイルから抜粋を抽出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート