AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Playbackrate & Pitch bei WAV-Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Playbackrate & Pitch bei WAV-Dateien

Ein Thema von Vroomfondel · begonnen am 12. Aug 2005 · letzter Beitrag vom 14. Aug 2005
Antwort Antwort
Vroomfondel

Registriert seit: 12. Aug 2005
6 Beiträge
 
#1

Playbackrate & Pitch bei WAV-Dateien

  Alt 12. Aug 2005, 15:53
Hallo zusammen,

ich programmiere zur Zeit eine digitales Diktiergerät. Im Grunde ist das nichts anderes als ein simpler Player/Recorder mit der Möglichkeit eine WAV-Datei aufzunehmen, an beliebiger Stelle und in "real-time" einzufügen, zu überschreiben, zu löschen, (hörbar) vor- bzw. zurückzuspulen, Kontrolle des Pegels mit VU-Meter und Verwaltung aufgenommener Diktate. Das ist so weit fertig.
Später werde ich mich wohl noch um die Zusammenarbeit des Programms mit einem Diktiermikrofon (z.B. Philips Speechmike o.ä.) kümmern müssen, aber das ist vorerst nicht mein Problem.
Es geht um folgendes: Damit ein Diktat leichter abgetippt werden kann, sollte die Möglichkeit bestehen, die WAV-Datei langsamer abzuspielen, d.h. die Playbackrate der WAV-Wiedergabe sollte (möglichst stufenlos) regelbar sein. Noch besser wäre es, wenn gleichzeitig der Pitch so angepasst werden könnte, dass die Sprache natürlich, und weniger nach Darth Vader klingt. Beides geht wohl mit der MCI. Möglicherweise aber nicht so wie ich sie verwende (mciSendString). Nur ungern würde ich zu komplizierteren Lösungen greifen, weil sich mit mciSendString ansonsten alles und frappierend einfach realisieren läßt.

Prinzipiell gibt es einen MCI-Befehl zu Einstellung der Playbackrate:
SET alias SPEED [Playbackrate]

...nur scheint der bei WAV-Dateien nicht zu funktionieren. Mit MP3 z.B. geht's. Für den Pitch habe ich bislang kein entsprechendes Kommando gefunden, irgendwie soll es aber möglich sein.

Sieht jemand eine Möglichkeit oder führt kein Weg daran vorbei, maschinennäher in die Materie einzusteigen?

http://www.imgzhost.com/uploads/97d08e932b.gif
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Playbackrate & Pitch bei WAV-Dateien

  Alt 12. Aug 2005, 16:18
Ich habe große Zweifel daran, dass Windows eine Methode mitliefert um Timestretching ohne Pitchshift zu realisieren. Das ist nämlich garnicht so simpel! Es mag die Strings SPEED oder auch PITCH geben (weiss net obs die wirklich gibt, aber wenn ), jedoch vermute ich stark dass beides sowohl Tonhöhe als auch Länge beeinflussen.

Das wirst du vermutlich von Hand machen müssen. Die einfachste variante ist es, dein Wave zu segmentieren, und zwischen die Segmente gleich lange Abschnitte von Stille einzufügen um auf die Ziellänge zu kommen. Nun noch die jeweils vorhergehenden Segmente so oft (und möglw. auch abgeschnitten) in die zugehörigen stillen Teile zu kopieren.
Was treten da für Probleme auf?
1) Du wirst bei fixer Segmentierung wohl kaum passend immer Nulldurchgänge erwischen. Daher wird das ein ziemliches "Geklicker" im Resultat
2) Es klingt nicht wie natürlich langsamer gesprochen, da der Mensch z.B. Klicklaute wie sie in "t" oder "p" vorkommen NICHT in die Länge zieht. Es wird je nach Größe der Segmente also wie "tttt" oder "pppp" klingen, oder einen komischen Ton erzeugen der nichts mehr mit einem Klicklaut gemein hat

Punkt 1 ließe sich noch auf 2 Arten verbessern:
- Dynamische Segmentierung nur an Nulldurchgängen der Waveform, so dass Schnitte immer mit 0 beginnen und enden (und somit immer aneinander passen). Es bleibt das Problem bei Füllungen die nicht ganz in die Stille passen - sie müssen ja abgeschnitten werden, so dass dort wieder ein Sprung entstehen dürfte.
- Ganz kurzes Crossfading an den Segmentgrenzen. Dies dürfte im Regelfall die bessere, aber auch weit kompliziertere Variante sein.

Bei Punkt 2 gibt es z.B. von Steinberg Tools die analysieren wo Klicklaute vorkommen, und diese gesondert behandeln. Wie die das machen weiss ich aber auch nicht. Die Programme werden aber nicht umsonst eine Kleinigkeit kosten .

Was du dir aber denke ich generell abschminken kannst, ist das alles in Realtime zu machen. Am ehesten wirst du mit einem Buffer arbeiten können, so dass du immer eine gewisse Menge vorausberechnest. So einen Buffer für diese Anwendung zu verwalten dürfte aber auch garnicht so einfach mehr sein... Und mit den MCI-Klamotten wirdst du dann auch nicht mehr arbeiten können, da du ja rohe Daten ausgeben musst. Da wäre evtl. ASIO was für dich. Das einfachste wäre aber, wenn man ein gesamtes File vorausberechnet. Dauert aber im Vorfeld, und Änderungen mitten beim Abspielen wären dann auch nicht mehr möglich.
Da müsstest du abwägen ob dir die Dynamik so viel Mehraufwand wert ist.

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#3

Re: Playbackrate & Pitch bei WAV-Dateien

  Alt 14. Aug 2005, 07:18
Hi

@Vroomfondel

Warum nimmst du nicht bass.dll? damit kannst du doch alles machen was du vorhast.
Tempo, Pich, ASIO, Recording as (mp3, ogg, wav,….)! FX, DSP, Equalizer,…!


Oder was ist mit
FMod-EX v4 Neu [01.08.05]
Es wurde von Grund auf neu geschrieben unter Rückblick auf 10 Jahre Erfahrung durch FMOD!

http://www.fmod.de/
http://www.fmod.org/
Angehängte Dateien
Dateityp: rar tempo_asio_518.rar (330,8 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz