Tonhöhe ändern

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von johannes 123456.

    Tonhöhe ändern

    Hallo,

    Wie manche vielleicht schon mitbekommen arbeite ich an einem Smart Home Program.

    Habe für das Programm jetzt die windowssprachausgabe verwendet um mit dem System "sprechen" zu können.

    was jetzt noch lustig wäre, ist wenn ich die Tonhöhe anpassen könnte um somit dem Computer bei speziellen Frage - Antwort Situationen eine Persöhnlicjere Stimme zu verleihen.

    wenn man etwas schlimmes hört. Sagt man ja auch nicht in einem freudigen Ton. Das ist toll oder sowas


    da wäre es gut wenn man die Tonhöhe und vll noch die Geschwindigkeit einstellen könnte.

    Kennt sich jemand damit aus?
    Schau dir die Klasse Prosody im Namesapce System.Speech.Synthesis.TtsEngine an. Die Prosody-Klasse hat eine Property namens Pitch, das ist die Tonhoehhe. Rate ist die Geschwindigkeit.
    msdn.microsoft.com/en-us/libra….ttsengine(v=vs.110).aspx
    And i think to myself... what a wonderfuL World!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Eddy“ ()

    Oh Sorry, war das falsche, du wolltest sicjer keine eigene RenderingEngine machen.

    Das ist wohl eher etwas.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub BtnSpeak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSpeak.Click
    2. Using speech As New SpeechSynthesizer
    3. Dim tts As String = "This example demonstrates a basic use of Speech Synthesizer"
    4. Dim builder As New PromptBuilder
    5. Dim style As New PromptStyle
    6. style.Emphasis = PromptEmphasis.Strong
    7. style.Rate = PromptRate.Fast
    8. style.Volume = PromptVolume.ExtraLoud
    9. builder.StartStyle(style)
    10. builder.AppendText(tts)
    11. builder.EndStyle()
    12. speech.Speak(builder)
    13. style.Emphasis = PromptEmphasis.Reduced
    14. style.Rate = PromptRate.Slow
    15. style.Volume = PromptVolume.ExtraSoft
    16. builder.ClearContent()
    17. builder.StartStyle(style)
    18. builder.AppendText(tts)
    19. builder.EndStyle()
    20. speech.Speak(builder)
    21. End Using
    22. End Sub
    And i think to myself... what a wonderfuL World!
    Hallo 'johannes 123456'

    grundsätzlich kann man die Tonhöhe jeder Raw-Audio-Datei (Wav) verändern, indem man die Rohdaten auf einer anderen Zeitskala abbildet, d.h. man muss "umsamplen". Hier ist nicht gemeint, die Samplerate im Header zu ändern, sondern die Neuberechnung der Position jedes einzelnen Samples auf der Zeitskala (bei gleichbleibender Abspiel-Samplerate, z.B. 44100 sps).

    Es gibt wohl einige Klasse oder dlls, die das können (eine wurde ja bereits erwähnt). Wenn man es hingegen selber macht, also den entsprechenden Algo selber schreibt, lernt man gleichzeitig noch ein bisschen was. Der benötigte Algo ist nicht weiter kompliziert: Stell dir vor du malst einen Sinus auf kariertem Papier (5 mm pro Kästchen) und übertragst diese Kurve dann auf mm-Papier (1 mm pro Kästchen), dann hast du einfach den Maßstab geändert. Die Tonhöhe ist dann 5 mal so hoch.

    Wenn du dich darauf einlassen würdest, würde ich gerne behilflich sein. Bei fertigen Klassen/dlls muss ich passen (interessiert mich nicht ;) )

    LG, vb3-guru
    Danke habe das jetzt schon recht weitbekommen und für meinen Verwendungszweck reicht das.

    Geht ja nur darum den Computer zu vermeschlichen was derzeit sowieso mein größtes Problem ist, da ein Mensch ja auf dieselbe Frage nie gleich antwortet obwohl das bei der Fragestellung auch schon beginnt, da ja die Fragestellung auch immer variert.

    Ist halt zur Zeit sehr viel schreibarbeit :)